更新时间:2025-06-11 GMT+08:00
批量导入本地数据文件至ClickHouse集群
操作场景
当本地存在较多数据文件需要导入ClickHouse时,用户可以使用多线程导入工具批量导入ClickHouse。
多线程导入工具通过并行处理多个任务,显著提高数据导入的速度和效率。
- 提高处理速度:多线程可以充分利用多核CPU的计算能力,同时处理多个数据文件,从而显著减少数据导入的总时间。
- 资源高效利用:通过并行处理,可以更高效地利用系统资源,提高整体性能。
- 提高导入效率:多线程导入工具可以有效地管理并发任务,确保数据导入过程更加顺畅和高效。
约束与限制
本章节仅适用于MRS 3.3.0-LTS及之后版本。
前提条件
- 已安装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;
父主题: ClickHouse数据迁移同步