ClickHouse从Hive中导入超大规模数据(适用于MySQL)

ClickHouse从Hive中导入超大规模数据(适用于MySQL)

ClickHouse从Hive中导入超大数据(适用于MySQL)如何从hive中快速导出数据到ClickHouse?如何快速地将Hive中的数据导入ClickHouse?Hive t0 ClickHouse, How to Import data from Hive to Clickhouse quickly ?

 

背景

我们这里需要快速将Hive 数仓导入ClickHouse来完成实时OLAP即席查询。

  • Hive 离线数据仓库每天凌晨左右跑完,数据量不少,
  • Hive 文件存储格式为ORC File。
  • 上层数仓一般对应为宽表,字段比较多,ClickHouse中为强类型。
  • 为什么不用Flink, Spark?有时候恰恰相反我们需要的是一个实时OLAP

解决方案

期间也查询过大量资料,最终采用的方案为HiveToClickHouse架构方案图一》,这样做能比HiveToClickHouse架构方案图二》减少1IO。我们这里实际生产过程中DWSDWD同步起来数据大几百G,“hive -e” 可能是最好的方式。且直接用多线程主动导入到ClickHouse分片机中, 能够节省IO,更快的利用ClickHouse分布式引擎进行查询。

HiveToClickHouse架构方案图一
HiveToClickHouse架构方案图一

HiveToClickHouse架构方案图一架构实现的具体步骤

  1. 将hive数据仓库导出到机器本地硬盘。
  2. 启动和生产机同CPU核数的进程。
  3. 单一进程10w条记录/次,随机散列(random.shuffle)到三台ClickHouse分片机本地表。

 

HiveToClickHouse架构方案图二
HiveToClickHouse架构方案图二

HiveToClickHouse架构方案图二架构实现的具体步骤

  1. 将hive数据仓库导出到机器本地硬盘。
  2. 利用ClickHouse提供的CSV引擎将CSV数据文件映射到ClickHouse单一分片机的本地表中。
  3. 将数据从ClickHouse单一分片机的本地表中取出来,然后随机散列到三台ClickHouse分片机本地表。(可利用select data insert data实现;另外也可以利用clickhouse-copier来实现。然而呢实际测试中效果均不太理想)
  4. clickhouse-copier:https://clickhouse.tech/docs/zh/operations/utilities/clickhouse-copier/

ClickHouse从Hive中导入超大规模数据(适用于MySQL),2021-04-19, by:cpp.la

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注