StarRocks資料來源為您提供讀取和寫入StarRocks的雙向通道,本文為您介紹DataWorks對StarRocks資料同步的能力支援情況。
支援版本
-
支援EMR Serverless StarRocks各種版本。
-
支援EMR on ECS:StarRocks 2.1版本。
-
支援社區版StarRocks。
說明-
由於DataWorks僅支援內網串連StarRocks,社區版StarRocks需部署在EMR on ECS上。
-
社區版StarRocks的開放性較強,若在資料來源使用過程中出現適配性問題,可提交工單進行反饋。
-
使用限制
-
庫即時同步MySQL到StarRocks要求您的目標StarRocks表為主鍵模型。
-
整庫即時同步MySQL到StarRocks暫不支援除清空表(TRUNCATE)以外的DDL同步,對於其他DDL類型您可以選擇忽略或報錯提示。
支援欄位類型
僅支援數實值型別、字串類型和日期類型的欄位。
資料同步前準備(網路連通)
EMR Serverless StarRocks
為保證資源群組網路連通性,您需要提前將後續要使用的DataWorks資源群組的IP地址添加至EMR Serverless StarRocks執行個體的內網白名單中。
-
DataWorks資源群組的白名單IP地址請參見:通用配置:添加白名單。
-
添加EMR Serverless StarRocks執行個體白名單的操作入口如下。
在執行個體詳情頁面的基礎資訊地區,單擊安全性群組 ID右側的內網白名單連結可配置內網白名單;在 FE 詳情地區,單擊公網地址右側的公網白名單連結可配置公網白名單。
自建StarRocks
確保DataWorks的資源群組可以訪問StarRocks的查詢連接埠、FE連接埠和BE連接埠,通常為9030、8030、8040。
建立資料來源
在進行資料同步任務開發時,您需要在DataWorks上建立一個對應的資料來源,操作流程請參見資料來源管理,詳細的配置參數解釋可在配置介面查看對應參數的文案提示。
請根據您的網路環境選擇StarRocks串連模式:
情境一:內網串連(推薦)
內網鏈路延遲低、資料轉送更安全,無需額外配置公網許可權。
-
適用情境:您的StarRocks執行個體與Serverless資源群組處於同一VPC內。
-
支援使用阿里雲執行個體模式和串連串模式:
-
選擇阿里雲數據庫(RDS):直接選擇同VPC下的StarRocks執行個體,系統自動擷取串連資訊,無需手動設定。
-
選擇有公網IP:手動輸入執行個體的內網地址/IP、連接埠、Load URL。
-
情境二:公網串連
公網傳輸存在安全風險,建議搭配白名單、IP鑒權等安全性原則。
-
適用情境:需要通過公網訪問StarRocks執行個體(如跨地區、本地環境訪問)。
-
支援使用串連串模式(請確保StarRocks執行個體已開啟公網存取權限):
-
選擇有公網IP:手動填寫執行個體的公網地址/IP、連接埠、Load URL。
-
Serverless資源群組預設不具備公網訪問能力,使用公網地址串連StarRocks執行個體時,需要為綁定的VPC配置公網NAT Gateway和EIP後,才支援公網訪問資料來源。且需保證Serverless資源群組可以訪問StarRocks的查詢連接埠、FE連接埠和BE連接埠,通常為9030、8030、8040。
如果您使用的是阿里雲EMR StarRocks Serverless,主機地址/IP使用內網地址或公网地址,連接埠使用查詢連接埠。
-
FE:您可以在執行個體詳情頁擷取。
在FE 詳情地區中,查看公網地址和查詢連接埠(預設為
9030)。 -
資料庫:使用EMR StarRocks Manager串連執行個體後,可以在Sql編輯器或者中繼資料管理查看到對應的資料庫。
說明如果需要建立資料庫,可以直接在SQL Editor裡執行SQL命令進行建立。
資料同步任務開發
資料同步任務的配置入口和通用配置流程可參見下文的配置指導。
單表離線同步任務配置指導
-
支援資料來源:Data Integration模組資料來源支援的所有資料來源類型
-
指令碼模式配置的全量參數和指令碼Demo請參見下文的附錄:指令碼Demo與參數說明。
單表即時
-
支援資料來源:Kafka
-
配置指導:整庫即時同步任務配置
整庫離線
-
支援資料來源:MySQL
-
配置指導:整庫即時同步任務配置
整庫即時
-
支援資料來源:MySQL、Oracle、PolarDB
-
配置指導:整庫即時同步任務配置
附錄:指令碼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 |
所配置的表中需要同步的列名集合。如果要在讀取StarRocks時增加SET_VAR Hint,可在column中第一個列名前增加。例如同步列為id,要增加 |
是 |
無 |
|
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 |
說明
通過 Stream Load 方式寫入 StarRocks 時,資料寫入策略(Upsert 或 Append)由目標表的模型定義自動決定,無需在寫入階段指定。具體而言:主鍵模型自動執行 Upsert 操作,而其他模型則預設執行 Append 操作。 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 |