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執行個體白名單的操作入口如下。

自建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:您可以在執行個體詳情頁擷取。

資料庫:使用EMR StarRocks Manager串連執行個體後,可以在SQL Editor或者中繼資料管理查看到對應的資料庫。
說明如果需要建立資料庫,可以直接在SQL Editor裡執行SQL命令進行建立。
資料同步任務開發
資料同步任務的配置入口和通用配置流程可參見下文的配置指導。
單表離線同步任務配置指導
指令碼模式配置的全量參數和指令碼Demo請參見下文的附錄:指令碼Demo與參數說明。
附錄:指令碼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條件指定為
| 否 | 無 |
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匯入,此處可選擇配置匯入參數。如果無特殊配置則使用{}。可配置參數包括:
如果您的資料中本身包含\t、\n,則需自訂使用其他字元作為分隔字元,使用特殊字元樣本如下: StreamLoad同時也支援JSON格式匯入,您可以配置: JSON格式下可配置的參數:
| 是 | 無 |
column | 所配置的表中需要同步的列名集合。 | 是 | 無 |
loadUrl | 填寫StarRocks FrontEnd IP、Http Port(一般預設是 | 是 | 無 |
table | 選取的需要同步的表名稱。 | 是 | 無 |
preSql | 執行資料同步任務之前率先執行的SQL語句。例如,執行前清空表中的舊資料(truncate table tablename)。 | 否 | 無 |
postSql | 執行資料同步任務之後執行的SQL語句。 | 否 | 無 |
maxBatchRows | 最大每次寫入行數。 | 否 | 500000 |
maxBatchSize | 最大每次寫入位元組數。 | 否 | 5242880 |
strategyOnError | 批量寫入StarRocks異常時的處理策略。 取值範圍:
預設值: | 否 | exit |