import ChangeLog from ‘../changelog/connector-clickhouse.md’;
Clickhouse文件数据接收器
该接收器使用clickhouse-local程序生成clickhouse数据文件,随后将其发送至clickhouse服务器,这个过程也称为bulkload。该接收器仅支持表引擎为 ‘Distributed’的表,且internal_replication
选项需要设置为true
。支持批和流两种模式。
:::tip 提示
你也可以采用JDBC的方式将数据写入Clickhouse。
:::
名称 | 类型 | 是否必须 | 默认值 |
---|---|---|---|
host | string | yes | - |
database | string | yes | - |
table | string | yes | - |
username | string | yes | - |
password | string | yes | - |
clickhouse_local_path | string | yes | - |
sharding_key | string | no | - |
copy_method | string | no | scp |
node_free_password | boolean | no | false |
node_pass | list | no | - |
node_pass.node_address | string | no | - |
node_pass.username | string | no | “root” |
node_pass.password | string | no | - |
compatible_mode | boolean | no | false |
file_fields_delimiter | string | no | “\t” |
file_temp_path | string | no | “/tmp/seatunnel/clickhouse-local/file” |
key_path | string | no | “/tmp/id_rsa” |
common-options | no | - |
ClickHouse
集群地址,格式为host:port
,允许同时指定多个hosts
。例如"host1:8123,host2:8123"
。
ClickHouse
数据库名。
表名称。
连接ClickHouse
的用户名。
连接ClickHouse
的用户密码。
当ClickhouseFile需要拆分数据时,需要考虑的问题是当前数据需要发往哪个节点,默认情况下采用的是随机算法,我们也可以使用‘sharding_key’参数为某字段指定对应的分片算法。
在spark节点上的clickhouse-local程序路径。由于每个任务都会被调用,所以每个spark节点上的clickhouse-local程序路径必须相同。
为文件传输指定方法,默认为scp,可选值为scp和rsync。
由于seatunnel需要使用scp或者rsync进行文件传输,因此seatunnel需要clickhouse服务端访问权限。如果每个spark节点与clickhouse服务端都配置了免密登录,则可以将此选项配置为true,否则需要在node_pass参数中配置对应节点的密码。
用来保存所有clickhouse服务器地址及其对应的访问密码。
clickhouse服务器节点地址。
clickhouse服务器节点用户名,默认为root。
clickhouse服务器节点的访问密码。
在低版本的Clickhouse中,clickhouse-local程序不支持--path
参数,需要设置该参数来采用其他方式实现--path
参数功能。
ClickHouseFile使用CSV格式来临时保存数据。但如果数据中包含CSV的分隔符,可能会导致程序异常。使用此配置可以避免该情况。配置的值必须正好为一个字符的长度。
ClickhouseFile本地存储临时文件的目录。
用于scp或rsync传输文件的私钥路径。
Sink插件常用参数,请参考Sink常用选项获取更多细节信息。
ClickhouseFile { host = "192.168.0.1:8123" database = "default" table = "fake_all" username = "default" password = "" clickhouse_local_path = "/Users/seatunnel/Tool/clickhouse local" sharding_key = "age" node_free_password = false node_pass = [{ node_address = "192.168.0.1" password = "seatunnel" }] }