背景

公司采购了外部服务,其存储为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.35GB 1 290 sec 18.85 MB/sec 千兆局域网

参考

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

Sqoop导出ClickHouse数据到Hive的更多相关文章

  1. sqoop导出mysql数据进入hive错误

    看mr的运行显示:sqoop job可以获得的select max(xxx)结果,但是当mr开始时却显示大片错误,就是连接超时,和连接重置等问题, 最后去每个节点ping mysql的ip地址,发现 ...

  2. 使用sqoop把mysql数据导入hive

    使用sqoop把mysql数据导入hive export HADOOP_COMMON_HOME=/hadoop export HADOOP_MAPRED_HOME=/hadoop   cp /hive ...

  3. Sqoop导出MySQL数据

    导入所有表: sqoop import-all-tables –connect jdbc:mysql://ip:port/dbName --username userName --password p ...

  4. sqoop导oracle数据到hive中并动态分区

    静态分区: 在hive中创建表可以使用hql脚本: test.hql USE TEST; CREATE TABLE page_view(viewTime INT, userid BIGINT, pag ...

  5. python脚本 用sqoop把mysql数据导入hive

    转:https://blog.csdn.net/wulantian/article/details/53064123 用python把mysql数据库的数据导入到hive中,该过程主要是通过pytho ...

  6. sqoop 导入增量数据到hive

    版本 hive:apache-hive-2.1.0 sqoop:sqoop-1.4.6 hadoop:hadoop-2.7.3 导入方式 1.append方式 2.lastmodified方式,必须要 ...

  7. Hadoop Hive概念学习系列之HDFS、Hive、MySQL、Sqoop之间的数据导入导出(强烈建议去看)

    Hive总结(七)Hive四种数据导入方式 (强烈建议去看) Hive几种数据导出方式 https://www.iteblog.com/archives/955 (强烈建议去看) 把MySQL里的数据 ...

  8. sqoop用法之mysql与hive数据导入导出

    目录 一. Sqoop介绍 二. Mysql 数据导入到 Hive 三. Hive数据导入到Mysql 四. mysql数据增量导入hive 1. 基于递增列Append导入 1). 创建hive表 ...

  9. 使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟

    使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟 Sqoop 大数据 Hive HBase ETL 使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟 基础环境 ...

  10. 将数据导入hive,将数据从hive导出

    一:将数据导入hive(六种方式) 1.从本地导入 load data local inpath 'file_path' into table tbname; 用于一般的场景. 2.从hdfs上导入数 ...

随机推荐

  1. adb 安装与使用

    什么是adb adb 是有个通用命令行工具 他允许您与模拟器实例或者链接的Android设备进行通信,他可为各种设备操作提供便利,比如安装和调试应用 启动adb 服务在命令行中输入adb start- ...

  2. Java 19 新功能介绍

    点赞再看,动力无限. 微信搜「程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录,有很多知识点和系列文章. Java 19 在2022 年 9 ...

  3. 使用GitHub Actions实现自动化部署

    前言 大家在工作中想必都是通过自动化部署来进行前端项目的部署的,也就是我们在开发完某个需求时,我们只需要将代码推送到某个分支,然后就能自动完成部署,我们一般不用关心项目是如何build以及如何depl ...

  4. jmeter接口自动化-通过csv文件读取用例并执行测试

    最近在公司测试中经常使用jmeter这个工具进行接口自动化,简单记录下~ 一.在csv文件中编写好用例 首先在csv文件首行填写相关参数(可根据具体情况而定)并编写测试用例.脚本可通过优先级参数控制执 ...

  5. 又拍云之 Keepalived 高可用部署

    在聊 Keepalived 之前,我们需要先简单了解一下 VRRP.VRRP(Virtual Router Redundancy Protocol)即虚拟路由冗余协议,是专门为了解决静态路由的高可用而 ...

  6. carbon

    https://blog.csdn.net/wtt945482445/article/details/79385234

  7. Crond服务+Shell实现秒级任务

    服务 [root@19-v1-centos-6 ~]# chkconfig --list | grep crond crond 0:off 1:off 2:on 3:on 4:on 5:on 6:of ...

  8. 解决mysql本地连接速度慢

    解决方法 用127.0.0.1而不用localhost 原因 听说是有什么DNS的反向解析

  9. 第2-4-6章 springboot整合规则引擎Drools-业务规则管理系统-组件化-中台

    目录 7. Spring整合Drools 7.1 Spring简单整合Drools 7.1.1 以上代码均在drools_spring项目中 7.2 Spring整合Drools+web 7.2 以上 ...

  10. 【面试题总结】JVM01-组成及垃圾回收

    一.概念 1.JVM组成及作用 (1)组成:类加载器.运行时数据区(Java内存模型).执行引擎.本地库接口 (2)作用: 类加载器(ClassLoader)把class文件转换成字节码: 运行时数据 ...