ClickHouse数据批量导入
本章节适用于MRS 3.3.0及之后版本。
操作场景
当同时存在较多待导入的数据文件,用户可以使用多线程导入工具批量导入ClickHouse。
前提条件
- 已安装ClickHouse客户端,例如客户端安装目录为“/opt/client”。
- 如果集群为安全模式需要创建一个具有ClickHouse相关权限的用户,例如创建用户“clickhouseuser”,具体请参考创建ClickHouse角色。
- 准备待导入的数据文件,并将数据文件上传到客户端节点目录,例如上传到目录“/opt/data”。ClickHouse支持的所有数据类型请参考:https://clickhouse.com/docs/en/interfaces/formats
操作步骤
- 以客户端安装用户,登录客户端所在节点。
- 进入多线程写入工具“clickhouse_insert_tool”所在目录:
cd /opt/client/ClickHouse/clickhouse_insert_tool
- 使用文本编辑器打开clickhouse_insert_tool.sh,按照注释填写所需信息:
参数
参数描述
示例
datapath
待导入数据所在目录。
/opt/data
balancer_ip_list
ClickHouse服务Balancer实例IP地址列表,整体使用括号括起,单个IP使用双引号引起,IP之间使用空格分隔。
("192.168.1.1" "192.168.1.2")
balancer_tcp_port
ClickHouse服务Balancer实例TCP端口。
21428
local_table_name
待导入的本地库名.本地表名。
testdb1.testtb1
thread_num
并发导入线程数。
10
data_format
待导入数据的格式。
CSV
is_security_cluster
是否为安全模式集群。
- true:表示安全模式
- false:表示普通模式
true
- 保存修改后的 “clickhouse_insert_tool.sh”,并执行如下命:
cd /opt/client
source bigdata_env
安全模式(开启Kerberos认证)执行kinit命令,普通模式(关闭Kerberos认证)无需执行:
kinit clickhouseuser
- 运行脚本,导入数据。
./ClickHouse/clickhouse_insert_tool/clickhouse_insert_tool.sh
- 登录ClickHouse客户端节点,连接服务端,具体请参考ClickHouse客户端使用实践。
- 执行如下命令,查询插入数据的本地表对应的分布式表,查看结果是否符合预期:
select count(1) from testdb1.testtb1_all;