ByteHouse 支持外置计算引擎的批式导入。
相比通过引擎进行Insert
数据,批式导入功能具有以下特点:
支持多线程并行导入,导入大文件的速度更快。
导入时直接写 Part 文件,不经过引擎;且通过 Spark/Flink,采用外部计算资源导入,对查询性能的影响更低。
完成完整的 Part 文件后挂载,不会出现 Insert
导致的 Part 过多,合并慢的情况。
数据导入 -> 新建数据源 -> 源类型选择(对象存储/Hive/ClickHouse/LAS);
按照对应数据源的配置表单,填写数据源连接信息。
说明
请确保数据源和 ByteHouse 集群在网络上是互通的,且所提供的数据源的访问账号(例如对象存储的 ak/sk)有对应路径/库表的访问权限。
前置准备:
建完目标表。
建完数据源。
创建步骤:
数据导入 -> 新建导入任务
填写作业名称,描述。请注意作业名称不可与其他作业名重名。
根据源类型,填写相关的路径或库表信息。
选择目标数据表(需要目标数据表已经建完)
进行数据源中的列和表中的列的匹配。
此处,部分数据源(如对象存储)可通过选择 “数据映射”,可以从之前选择的
bucket/path/
中选择一个 Schema 描述文件,提取描述文件的信息,自动生成源列。
注意
注意,目前离线导入不支持 Expression 进行简单的数据转换,需要确保源数据和目标数据的数据格式是一致的)。
分区 Partition
:分区为 ClickHouse 中表内的逻辑单元,由分区键(Partition Key)作为分隔依据。使用离线导入功能,最小导入单位为一个完整分区,不是行(Row)。因此,2 次导入中若出现分区字段值重复,就会出现分区冲突。例如,第一次导入产生了 '2022-2-2' 分区,第二次导入中部分行的分区键值也是 '2022-2-2',导入过程中生成了新的 '2022-2-2' 分区,因此冲突。
可以选择以下四种模式处理分区冲突:
在“数据导入”模块下找到之前创建的导入任务,选择“开始”。
开始导入时,不同数据源有不同的导入参数需要填写:
说明
对于文件系统类数据源,有以下限制:
在开启任务后,会生成对应的执行记录。通过导入任务,可查看该任务所有的执行记录与执行状态。
对于每个冲突,可以选择以下两种处理类型:
覆盖,保留新分区,老分区的数据完全丢弃。
不覆盖,保留老分区,丢弃新导入的分区。
冲突处理完成后,导入任务即会完成。进入“已停止”状态,即代表导入成功。