利用haohedi ETL将数据库中的数据抽取到hadoop Hive中

采用HIVE自带的apache 的JDBC驱动导入数据基本上只能采用Load data命令将文本文件导入,采用INSERT ... VALUES的方式插入速度极其慢,插入一条需要几十秒钟,基本上不可用。

 Hive 2.1.1需要依赖的jar包有:

hadoop-common-2.6.0.jar
hive-common-2.1.0.jar
hive-jdbc-2.1.0.jar
hive-metastore-2.1.0.jar
hive-serde-2.1.0.jar
hive-service-2.1.0.jar
hive-service-rpc-2.1.0.jar
hive-shims-2.1.0.jar
libthrift-0.9.3.jar

可通过这里查找下载:https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc/2.1.1

 

如果想从各种数据源直接抽取数据导入Hive,且数据量不算太大的话,建议使用CDATA的驱动,但这个驱动是收费的,有一个月的试用期,试用期到期用新的邮箱地址继续申请也可以。

下载地址:https://www.cdata.com/drivers/hive/jdbc/

下载后解压并运行setup.jar(双击运行),安装到本地磁盘后,打开安装后的目录,里边有三个文件

利用haohedi ETL将数据库中的数据抽取到hadoop Hive中

将jar和lic文件导入到HHDI\WEB-INF\lib下,到期后重新卸载安装该驱动后,将lic文件更新即可

在HHDI驱动管理中,添加如下驱动

利用haohedi ETL将数据库中的数据抽取到hadoop Hive中

cdata.jdbc.hive.HiveDriver

jdbc:hive:Server={host};Port={port};TransportMode=BINARY

数据连接配置:

利用haohedi ETL将数据库中的数据抽取到hadoop Hive中

数据抽取从Oracle到Hive,1w条记录大约用时50秒,数据量不算太大时,尚可接受。

利用haohedi ETL将数据库中的数据抽取到hadoop Hive中

海量数据导入,还是建议先将数据导出到txt并上传到hdfs,用loaddata命令导入,如下:

利用haohedi ETL将数据库中的数据抽取到hadoop Hive中

关于如何从数据库导出文本并导入Hive,请看另外一篇文章:

https://www.cnblogs.com/haohedi/p/10417902.html 

 

HaoheDI让ETL变得简单,http://www.haohedi.com