全部產品
Search
文件中心

DataWorks:StarRocks資料來源

更新時間:Dec 14, 2024

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

支援的版本

  • 支援EMR Serverless StarRocks 2.5和3.1版本。

  • 支援EMR on ECS:StarRocks 2.1版本。

  • 支援社區版StarRocks。社區版StarRocks請參見:StarRocks官方網站

    說明

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

支援的欄位類型

支援大部分StarRocks類型,包括數實值型別、字串類型、日期類型。

資料同步前準備

為保證資源群組網路連通性,您需要提前將後續要使用的DataWorks資源群組的IP地址添加至EMR Serverless StarRocks執行個體的內網白名單中,同時,還需要允許該網段訪問9030、8030、8040連接埠。

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

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

    image.png

建立資料來源

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

建立資料來源時JDBC URL拼接方式如下:

如果使用的是阿里雲emr starrocks Serverless,則JDBC URL的拼接方式是:

jdbc:mysql://<FE URL>:<FE查詢連接埠>/<資料庫名稱>,其中:

  • 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.1.1:8030"
        ],
        "table": "table1",
        "preSql": [
            "truncate table table1"
        ],
        "postSql": [
        ],
        "maxBatchRows": 500000,
        "maxBatchSize": 5242880
    },
    "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"}

column

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

loadUrl

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

table

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

preSql

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

postSql

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

maxBatchRows

最大每次寫入行數。

500000

maxBatchSize

最大每次寫入位元組數。

5242880