绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
Sqoop导出ClickHouse数据到Hive
2023-02-06 17:48:06

背景

公司采购了外部服务,其存储为ClickHouse,按照公司要求需要将其数据采集到Hive。

验证环境

  • CDH: 6.3.2
  • ClickHouse: 19.15.4.10
  • Sqoop: 1.4.7

Driver

  • 需要在脚本中明确指明所使用的Driver完整签名。
  • ClickHouse使用自定义协议,所以需要将jar文件添加到$SQOOP_HOME/lib(仅提交任务到客户端机器即可)。
    • 0.4.0版本:$SQOOP_HOME/lib/clickhouse-jdbc-0.4.0-all.jar
    • 0.3.1-patch:$SQOOP_HOME/lib/clickhouse-jdbc-0.3.1-patch-shaded.jar

异常

No columns to generate for ClassWriter
这是一个通用异常,表示在生成代码之前发生了异常。想要解决问题,需要查看该异常之前的异常,有时不能正确显示异常,如果看不懂,再次执行显示异常可能会变化,曝露出来的才是真问题,比如用户名密码问题,或者driver版本问题。

  • 用户名密码问题,如果ck端没有用户名密码,则不要添加username和password。
  • driver版本问题,笔者driver使用0.4.0.0,ck server端使用19.15.4.10,提示"Sorry this driver only supports Clickhouse server 20.7 or above,降至0.3.1-patch版本问题解决。

注意

clickhouse-jdbc-0.3.2+(包含0.3.2)版本与之前版本有较大差异,请根据自己的ClickHouse server版本选择对应版本。

  1. 0.3.2+仅支持ClickHouse server 20.7,本次验证使用0.3.1-patch版本可以实现sqoop import。
  2. driverClass名称在0.3.2版本同样发生了变更:
  • 0.3.2(含)+:com.clickhouse.jdbc.ClickHouseDriver
  • 0.3.2(不含)-:ru.yandex.clickhouse.ClickHouseDriver
  1. 协议名称也发生了调整
  • 0.3.2(含)+:jdbc:ch://<host>:<port>[/<database>]
  • 0.3.2(不含)-:jdbc:clickhouse://<host>:<port>[/<database>]

脚本

如下脚本用于0.3.1-patch版本,在0.3.2+版本注意修改driver和协议名称。

sqoop import \
--connect "jdbc:clickhouse://10.1.10.18:8124/mydb" \
--driver ru.yandex.clickhouse.ClickHouseDriver \
-m 1 \
--mapreduce-job-name mydb_message \
--hs2-url "jdbc:hive2://hadoop7:10001/;principal=hive/hadoop7@N18.COM" --hive-table dev_shuju.mydb_message \
--target-dir /tmp/sqoop/import/mydb_message \
--delete-target-dir \
--hive-import \
--hive-drop-import-delims \
--hive-overwrite \
--fields-terminated-by '\001' \
--null-string '\\N' \
--null-non-string '\\N' \
--hive-partition-key ymd \
--hive-partition-value '20211127' \
--query "select * from message where date='2021-11-27' and \$CONDITIONS";

性能

条数字节数并行度用时速率网络环境
410 万5.35GB1290 sec18.85 MB/sec千兆局域网

参考

  1. ClickHouse/clickhouse-java-0.3.1-patch
  2. Sqoop User Guide (v1.4.7)
分享好友

分享这个小栈给你的朋友们,一起进步吧。

ClickHouse
创建时间:2022-04-06 14:57:30
ClickHouse 是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),使用C++语言编写,主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 飘絮絮絮丶
    专家
戳我,来吐槽~