Sqoop导出ClickHouse数据到Hive
2024-10-21 04:15:11
背景
公司采购了外部服务,其存储为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
- 0.4.0版本:
异常
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版本选择对应版本。
- 0.3.2+仅支持ClickHouse server 20.7,本次验证使用0.3.1-patch版本可以实现sqoop import。
- driverClass名称在0.3.2版本同样发生了变更:
- 0.3.2(含)+:
com.clickhouse.jdbc.ClickHouseDriver
- 0.3.2(不含)-:
ru.yandex.clickhouse.ClickHouseDriver
- 协议名称也发生了调整
- 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.35GB | 1 | 290 sec | 18.85 MB/sec | 千兆局域网 |
参考
最新文章
- [Computational Advertising] 计算广告学笔记之基础概念
- Bar菜单
- 可在广域网部署运行的QQ高仿版 -- GG叽叽V1.8(源码)
- [转]maven安装以及eclipse配置maven
- .Net 配置文件--继承ConfigurationSection实现自定义处理类处理自定义配置节点
- ZOJ 3654 Letty&#39;s Math Class 模拟 难度:0
- poj2686-Traveling by Stagecoach(状压dp)
- Maven笔记(一)
- Winform DataTable 客户端操作数据
- 【随记】关于List集合用Linq GroupBy分组过后的遍历小记
- OpenSuse13.2硬盘安装
- COB (Chip On Board) 製程介紹/簡介/注意事項 I
- Android 开源项目android-open-project工具库解析之(一) 依赖注入,图片缓存,网络相关,数据库orm工具包,Android公共库
- Django中Q查询及Q()对象
- 正负样本比率失衡SMOTE
- 试着讲清楚:js代码运行机制
- XMPP系列(六)---创建群组
- ubuntu12.04:Mysql数据库:自动安装
- Python学习 Part5:输入输出
- js坚持不懈之12:var b = {a:1};