全部產品
Search
文件中心

DataWorks:StarRocks資料來源

更新時間:Oct 28, 2025

StarRocks資料來源為您提供讀取和寫入StarRocks的雙向通道,本文為您介紹DataWorks對StarRocks資料同步的能力支援情況。

支援版本

  • 支援EMR Serverless StarRocks各種版本。

  • 支援EMR on ECS:StarRocks 2.1版本

  • 支援社區版StarRocks

    說明
    • 由於DataWorks僅支援內網串連StarRocks,社區版StarRocks需部署在EMR on ECS上。

    • 社區版StarRocks的開放性較強,若在資料來源使用過程中出現適配性問題,可提交工單進行反饋。

支援欄位類型

僅支援數實值型別、字串類型和日期類型的欄位。

資料同步前準備(網路連通)

EMR Serverless StarRocks

為保證資源群組網路連通性,您需要提前將後續要使用的DataWorks資源群組的IP地址添加至EMR Serverless StarRocks執行個體的內網白名單中。

  • DataWorks資源群組的白名單IP地址請參見:通用配置:添加白名單

  • 添加EMR Serverless StarRocks執行個體白名單的操作入口如下。

    image.png

    自建StarRocks

    確保DataWorks的資源群組可以訪問StartRocks的查詢連接埠FE連接埠BE連接埠,通常為9030、8030、8040。

建立資料來源

在進行資料同步任務開發時,您需要在DataWorks上建立一個對應的資料來源,操作流程請參見資料來源管理詳細的配置參數解釋可在配置介面查看對應參數的文案提示

請根據您的網路環境選擇StarRocks串連模式:

情境一:內網串連(推薦)

內網鏈路延遲低、資料轉送更安全,無需額外配置公網許可權。

  • 適用情境:您的StarRocks執行個體與Serverless資源群組處於同一VPC內。

  • 支援使用阿里雲執行個體模式和串連串模式

    • 選擇阿里雲執行個體模式:直接選擇同VPC下的StarRocks執行個體,系統自動擷取串連資訊,無需手動設定。

    • 選擇串連串模式:手動輸入執行個體的內網地址/IP、連接埠、Load URL。

情境二:公網串連

公網傳輸存在安全風險,建議搭配白名單、IP鑒權等安全性原則。

  • 適用情境:需要通過公網訪問StarRocks執行個體(如跨地區、本地環境訪問)。

  • 支援使用串連串模式(請確保StarRocks執行個體已開啟公網存取權限)

    • 選擇串連串模式:手動填寫執行個體的公網地址/IP、連接埠、Load URL。

說明

Serverless資源群組預設不具備公網訪問能力,使用公網地址串連StarRocks執行個體時,需要為綁定的VPC配置公網NAT Gateway和EIP後,才支援公網訪問資料來源。且需保證Serverless資源群組可以訪問StarRocks的查詢連接埠FE連接埠BE連接埠,通常為9030、8030、8040。

如果您使用的是阿里雲EMR StarRocks Serverless,主機地址/IP使用內網地址公網地址,連接埠使用查詢連接埠

  • FE:您可以在執行個體詳情頁擷取。

    image.png

  • 資料庫:使用EMR StarRocks Manager串連執行個體後,可以在SQL Editor或者中繼資料管理查看到對應的資料庫。

    image.png

    說明

    如果需要建立資料庫,可以直接在SQL Editor裡執行SQL命令進行建立。

資料同步任務開發

資料同步任務的配置入口和通用配置流程可參見下文的配置指導。

單表離線同步任務配置指導

附錄:指令碼Demo與參數說明

離線任務指令碼配置方式

如果您配置離線任務時使用指令碼模式的方式進行配置,您需要按照統一的指令碼格式要求,在任務指令碼中編寫相應的參數,詳情請參見指令碼模式配置,以下為您介紹指令碼模式下資料來源的參數配置詳情。

Reader指令碼Demo

{
    "stepType": "starrocks",
    "parameter": {
        "selectedDatabase": "didb1",
        "datasource": "starrocks_datasource",
        "column": [
            "id",
            "name"
        ],
        "where": "id>100",
        "table": "table1",
        "splitPk": "id"
    },
    "name": "Reader",
    "category": "reader"
}

Reader指令碼參數

參數

描述

是否必選

預設值

datasource

StarRocks資料來源名稱。

selectedDatabase

StarRocks資料庫名稱。

StarRocks資料來源內配置的資料庫名稱。

column

所配置的表中需要同步的列名集合。

where

篩選條件,在實際業務情境中,往往會選擇當天的資料進行同步,將where條件指定為gmt_create>$bizdate

  • where條件可以有效地進行業務增量同步處理。

  • where語句,包括不提供where的key或value,資料同步均視作同步全量資料。

table

選取的需要同步的表名稱。

splitPk

StarRocks Reader進行資料幫浦時,如果指定splitPk,表示您希望使用splitPk代表的欄位進行資料分區,資料同步因此會啟動並發任務進行資料同步,提高資料同步的效能。推薦splitPk使用者使用表主鍵,因為表主鍵通常情況下比較均勻,因此切分出來的分區也不容易出現資料熱點。

Writer指令碼Demo

{
    "stepType": "starrocks",
    "parameter": {
        "selectedDatabase": "didb1",
        "loadProps": {
            "row_delimiter": "\\x02",
            "column_separator": "\\x01"
        },
        "datasource": "starrocks_public",
        "column": [
            "id",
            "name"
        ],
        "loadUrl": [
            "1.1.X.X:8030"
        ],
        "table": "table1",
        "preSql": [
            "truncate table table1"
        ],
        "postSql": [
        ],
        "maxBatchRows": 500000,
        "maxBatchSize": 5242880,
        "strategyOnError": "exit"
    },
    "name": "Writer",
    "category": "writer"
}

Writer指令碼參數

參數

描述

是否必選

預設值

datasource

StarRocks資料來源名稱。

selectedDatabase

StarRocks資料庫名稱。

StarRocks資料來源內配置的資料庫名稱。

loadProps

StarRocks StreamLoad請求參數。使用StreamLoad CSV匯入,此處可選擇配置匯入參數。如果無特殊配置則使用{}。可配置參數包括:

  • column_separator:CSV匯入資料行分隔符號,預設\t。

  • row_delimiter:CSV導行分隔字元,預設\n。

如果您的資料中本身包含\t、\n,則需自訂使用其他字元作為分隔字元,使用特殊字元樣本如下:

{"column_separator":"\\x01","row_delimiter":"\\x02"}

StreamLoad同時也支援JSON格式匯入,您可以配置:

{
  "format": "json"
}

JSON格式下可配置的參數:

  • strip_outer_array:用於指定是否裁剪最外層的數組結構。取值範圍:truefalse。預設值:false

    在真實業務情境中,待匯入的JSON資料可能在最外層有一對錶示數組結構的中括弧 []。這種情況下,建議您將該參數設定為 true,這樣StarRocks會裁剪掉外層的中括弧 [],並將中括弧內的每個內層數組作為單獨的一行資料匯入。如果將該參數設定為 false,StarRocks會將整個JSON資料檔案解析成一個數組,並作為一行資料匯入。

    例如,待匯入的JSON資料如下:

    [{"category":1,"author":2},{"category":3,"author":4}]
    
    • 如果將該參數設定為true,StarRocks會將 {"category":1,"author":2} 和 {"category":3,"author":4} 解析成兩行資料,並分別匯入到目標StarRocks表中的對應資料行。

    • 如果將該參數設定為false,StarRocks會將整個JSON數組解析成一行資料,並匯入到目標StarRocks表中。

  • ignore_json_size:用於指定是否檢查HTTP請求中JSON Body的大小。

    說明

    HTTP請求中JSON Body的大小預設不能超過100MB。如果JSON Body的大小超過100MB,會提示The size of this batch exceed the max size [104857600] of json type data data [8617627793].Set ignore_json_size to skip check,although it may lead huge memory consuming.錯誤。為避免該報錯,可以在HTTP要求標頭中添加ignore_json_size: true設定,忽略對JSON Body大小的檢查。

  • compression:指定在StreamLoad資料轉送過程中使用哪種壓縮演算法,支援GZIPBZIP2LZ4_FRAMEZSTD演算法。

  • strict_mode:用於指定是否開啟strict 模式。

    取值範圍:

    • true:開啟strict 模式,StarRocks會把錯誤的資料行過濾掉,只匯入正確的資料行,並返回錯誤資料詳情。

    • false:關閉strict 模式,StarRocks會把轉換失敗的錯誤欄位轉換成 NULL 值,並把這些包含 NULL 值的錯誤資料行跟正確的資料行一起匯入。

    預設值:false

column

所配置的表中需要同步的列名集合。

loadUrl

填寫StarRocks FrontEnd IP、Http Port(一般預設是8030),如果有多個FrontEnd節點,可全部配置上,並使用逗號(,)分隔。

table

選取的需要同步的表名稱。

preSql

執行資料同步任務之前率先執行的SQL語句。例如,執行前清空表中的舊資料(truncate table tablename)。

postSql

執行資料同步任務之後執行的SQL語句。

maxBatchRows

最大每次寫入行數。

500000

maxBatchSize

最大每次寫入位元組數。

5242880

strategyOnError

批量寫入StarRocks異常時的處理策略。

取值範圍:

  • exit:寫入StarRocks異常時同步任務失敗退出。

  • batchDirtyData。寫入StarRocks異常時當前這批資料批量計入髒資料。

預設值:exit

exit