跳到主要内容
版本: 最新版本-3.5

DataX writer

简介

StarRocksWriter 插件允许将数据写入 StarRocks 的目标表。具体来说,StarRocksWriter 通过 Stream Load 以 CSV 或 JSON 格式将数据导入到 StarRocks,并在内部缓存和批量导入 reader 读取的数据到 StarRocks,以获得更好的写入性能。整体数据流为 source -> Reader -> DataX channel -> Writer -> StarRocks

下载插件

请访问 https://github.com/alibaba/DataX 下载 DataX 的完整包,并将 starrockswriter 插件放入 datax/plugin/writer/ 目录。

使用以下命令进行测试:python datax.py --jvm="-Xms6G -Xmx6G" --loglevel=debug job.json

功能描述

示例配置

这是一个从 MySQL 读取数据并将其加载到 StarRocks 的配置文件。

{
"job": {
"setting": {
"speed": {
"channel": 1
},
"errorLimit": {
"record": 0,
"percentage": 0
}
},
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"username": "xxxx",
"password": "xxxx",
"column": [ "k1", "k2", "v1", "v2" ],
"connection": [
{
"table": [ "table1", "table2" ],
"jdbcUrl": [
"jdbc:mysql://127.0.0.1:3306/datax_test1"
]
},
{
"table": [ "table3", "table4" ],
"jdbcUrl": [
"jdbc:mysql://127.0.0.1:3306/datax_test2"
]
}
]
}
},
"writer": {
"name": "starrockswriter",
"parameter": {
"username": "xxxx",
"password": "xxxx",
"database": "xxxx",
"table": "xxxx",
"column": ["k1", "k2", "v1", "v2"],
"preSql": [],
"postSql": [],
"jdbcUrl": "jdbc:mysql://172.28.17.100:9030/",
"loadUrl": ["172.28.17.100:8030", "172.28.17.100:8030"],
"loadProps": {}
}
}
}
]
}
}

Starrockswriter 参数描述

  • username

    • 描述:StarRocks 数据库的用户名

    • 是否必须:是

    • 默认值:无

  • password

    • 描述:StarRocks 数据库的密码

    • 是否必须:是

    • 默认值:无

  • database

    • 描述:StarRocks 表的数据库名称。

    • 是否必须:是

    • 默认值:无

  • table

    • 描述:StarRocks 表的表名。

    • 是否必须:是

    • 默认值:无

  • loadUrl

    • 描述:用于 Stream Load 的 StarRocks FE 的地址,可以是多个 FE 地址,格式为 fe_ip:fe_http_port

    • 必需:是

    • 默认值:无

  • column

    • 描述:需要写入数据的目标表的字段,列之间用逗号分隔。示例:"column": ["id", "name", "age"]。

      必须指定列配置项,不能留空。 注意:我们强烈建议您不要将其留空,因为当您更改目标表的列数、类型等时,您的作业可能会运行不正确或失败。 配置项必须与 reader 中的 querySQL 或 column 的顺序相同。

  • 是否必须:是

  • 默认值:否

  • preSql

  • 描述:在将数据写入目标表之前将执行的标准语句。

  • 是否必须:否

  • 默认值:否

  • jdbcUrl

    • 描述:用于执行 preSqlpostSql 的目标数据库的 JDBC 连接信息。

    • 是否必须:否

  • 默认值:否

  • loadProps

    • 描述:StreamLoad 的请求参数,详细信息请参考 StreamLoad 介绍页面。

    • 是否必须:否

    • 默认值:否

类型转换

默认情况下,传入的数据转换为字符串,其中 t 作为列分隔符,n 作为行分隔符,形成 csv 文件以用于 StreamLoad 导入。 要更改列分隔符,请正确配置 loadProps

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

要将导入格式更改为 json,请正确配置 loadProps

"loadProps": {
"format": "json",
"strip_outer_array": true
}

json 格式用于 writer 以 JSON 格式将数据导入到 StarRocks。

关于时区

如果源 tp 库位于另一个时区,则在执行 datax.py 时,请在命令行中添加以下参数

"-Duser.timezone=xx"

例如,如果 DataX 导入 Postgrest 数据并且源库位于 UTC 时间,请将参数“-Duser.timezone=GMT+0”添加到启动。