0
点赞
收藏
分享

微信扫一扫

Hive 数据同步ClickHouse

大雁f 2022-02-09 阅读 99

需求:按条件筛选Hive表中的数据同步到ClickHouse中

方法一
按照ClickHouse 官方文档提供的方法,在ClickHouse 中创建HDFS引擎表,读取Hive的数据,将读取的数据插入到ClickHouse本地表中。

缺点
1.需要在clickhouse中创建两张表
2.如果Hadoop集群压力比较大,在读取HDFS数据的时候会出现超时的情况

方法二
在能直接读取HDFS数据的主机上安装clickhouse-client,读取HDFS数据后直接插入ClickHouse。

#!/bin/bash
#######################################
#  功能:同步hdfs数据到clickhouse
#  usage:sh  shell_name  table_name
#######################################

current_dir=$(cd `dirname $0`; pwd)

# 获取Hive表在HDFS上的存储路径
table_name=$1
input_file=`hadoop fs -ls  /warehouse/tablespace/hive/db01/${table_name}/*/*|awk '{print $8}'>${current_dir}/input_file.txt`

# 定义Clickhouse 数据源连接
ch="clickhouse-client -h 172.18.xxx.xxx  --port 9090 -u xxx --password xxx --query "

# 将Hive存储在Hdfs上的数据同步到clickhouse
for i in `cat ${current_dir}/${input_file}`
do
   echo `date +"%Y-%m-%d %H:%m:%S"`  '开始执行 .....' $i
   hadoop fs -text $i|${ch} "insert into xxx.xxx  format CSV" 
   echo `date +"%Y-%m-%d %H:%m:%S"`  '结束执行 .....' $i
done
举报

相关推荐

0 条评论