Sqoop导出ClickHouse数据到Hive
背景
公司采购了外部服务,其存储为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 | 千兆局域网 |
参考
Sqoop导出ClickHouse数据到Hive的更多相关文章
- sqoop导出mysql数据进入hive错误
看mr的运行显示:sqoop job可以获得的select max(xxx)结果,但是当mr开始时却显示大片错误,就是连接超时,和连接重置等问题, 最后去每个节点ping mysql的ip地址,发现 ...
- 使用sqoop把mysql数据导入hive
使用sqoop把mysql数据导入hive export HADOOP_COMMON_HOME=/hadoop export HADOOP_MAPRED_HOME=/hadoop cp /hive ...
- Sqoop导出MySQL数据
导入所有表: sqoop import-all-tables –connect jdbc:mysql://ip:port/dbName --username userName --password p ...
- sqoop导oracle数据到hive中并动态分区
静态分区: 在hive中创建表可以使用hql脚本: test.hql USE TEST; CREATE TABLE page_view(viewTime INT, userid BIGINT, pag ...
- python脚本 用sqoop把mysql数据导入hive
转:https://blog.csdn.net/wulantian/article/details/53064123 用python把mysql数据库的数据导入到hive中,该过程主要是通过pytho ...
- sqoop 导入增量数据到hive
版本 hive:apache-hive-2.1.0 sqoop:sqoop-1.4.6 hadoop:hadoop-2.7.3 导入方式 1.append方式 2.lastmodified方式,必须要 ...
- Hadoop Hive概念学习系列之HDFS、Hive、MySQL、Sqoop之间的数据导入导出(强烈建议去看)
Hive总结(七)Hive四种数据导入方式 (强烈建议去看) Hive几种数据导出方式 https://www.iteblog.com/archives/955 (强烈建议去看) 把MySQL里的数据 ...
- sqoop用法之mysql与hive数据导入导出
目录 一. Sqoop介绍 二. Mysql 数据导入到 Hive 三. Hive数据导入到Mysql 四. mysql数据增量导入hive 1. 基于递增列Append导入 1). 创建hive表 ...
- 使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟
使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟 Sqoop 大数据 Hive HBase ETL 使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟 基础环境 ...
- 将数据导入hive,将数据从hive导出
一:将数据导入hive(六种方式) 1.从本地导入 load data local inpath 'file_path' into table tbname; 用于一般的场景. 2.从hdfs上导入数 ...
随机推荐
- node 学习笔记 模块和包的管理与使用
1.前言 对于各种编程语言,代码组织是很重要的.而模块是node中的代码组织机制,node中的很多功能都以模块划分,而模块中又封装了许多方法,而且不会改变全局作用域,极大的方便了各开发者的需求. 2. ...
- day08-XML
XML 官方文档:https://www.w3school.com.cn/xml/index.asp 1.为什么需要xml? 需求1:两个程序间进行数据通信? 需求2:给一台服务器,做一个配置文件,当 ...
- DevOps|乱谈开源社区、开源项目与企业内部开源
之前的一篇文章<从特拉斯辞职风波到研发效能中的荒唐事>中关于企业内源的内容在研发效能群内引起了大家的热烈讨论.有的小伙伴不同意,有的小伙伴非常不同意,我觉得这都是非常正常的反馈,话不说不透 ...
- vue 使用vuex 刷新时保存数据
created () { this.$store.replaceState(Object.assign(this.$store.state,JSON.parse(localStorage.getIte ...
- Python学习之实例2
一.根据输入的各科成绩统计学生成绩是否达标 1 (背景:输入学生数量,以及各个学生语文.数学.英语.历史四科的成绩,如果总成绩小于 240,则成绩不达标,否则成绩合格) 2 3 #coding=utf ...
- 洛谷 P4135 作诗 题解
题面. 之前做过一道很类似的题目 洛谷P4168蒲公英 ,然后看到这题很快就想到了解法,做完这题可以对比一下,真的很像. 题目要求区间内出现次数为正偶数的数字的数量. 数据范围1e5,可以分块. 我们 ...
- 2022春每日一题:Day 33
题目:[USACO 6.1.3] Cow XOR 没找到这题具体网址,这个题就是求最大异或区间(总长度尽量小,右端点尽量大) 嗯很显然一个[l,r]的异或和=s[r]s[l-1],那么现在有了优秀的n ...
- FCOS论文复现:通用物体检测算法
摘要:本案例代码是FCOS论文复现的体验案例,此模型为FCOS论文中所提出算法在ModelArts + PyTorch框架下的实现.本代码支持FCOS + ResNet-101在MS-COCO数据集上 ...
- 【Java SE进阶】Day02 Collection、Iterator、泛型
一.Collection集合 1.概述 数组存元素,集合存对象(类型可以不一样) 2.框架分类 单列:Collection List ArrayList LinkedList Set HashSet ...
- 3A锂电池充电管理芯片PW4035
PW4052 是一颗适用于单节锂电池的.具有恒压/恒流充电模式的充电管理 IC.该芯片采用开关型的工作模式, 能够为单节锂电池提供快速. 高效且简单的充电管理解决方案. PW4052 采用三段式充电管 ...