使用Kettle向CDH集群中Hive导入数据表
- 使用Kettle向CDH集群中Hive导入数据表
- 步骤概览
- 详细步骤
- 环境准备
- 环境配置
- 数据抽取过程开发
CDH集群搭建好了,需要向Hive中导入数据,环境如下:
- CDH版本:Hadoop 2.6.0-cdh5.15.0
- Kettle 6.0
- JDK 1.8
- Oracle 11g
步骤概览
- 下载Hive客户端配置
去Hive服务器下载配置文件:hive-clientconfig.zip
- 配置Kettle的大数据文件
plugin.properties
- 引入JAR包
hive-*.jar
- 配置数据库连接
详细步骤
需求:CDH(Cloudera’s Distribution Including Apache Hadoop)集群搭建完成,安装了Hive和HDFS服务,现在向Hive中导入一个数据表,包含:创建表+数据导入。
环境准备
- CDH版本:Hadoop 2.6.0-cdh5.15.0
- Kettle 6.0
- JDK 1.8
- Oracle 11g
环境配置
注:先修改host文件C:\Windows\System32\drivers\etc\hosts
10.1.2.158 docker04
10.1.2.159 docker05
10.1.2.160 docker06
10.1.2.138 bigdata01
10.1.2.139 bigdata02
1.修改Kettle的D:\data-integration\plugins\pentaho-big-data-plugin\plugin.properties文件中属性 active.hadoop.configuration=hdp26
具体值需要根据Hadoop版本自定,查看方法:在集群服务器主节点输入命令:
hadoop version
返回:Hadoop 2.6.0-cdh5.15.0
则active.hadoop.configuration的值为hdp26
2.修改Kettle的D:\data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp23(这个文件夹名字可能不一样),这里把hdp23改成hdp26即可。
3.下载Hive客户端配置。
在集群管理界面Cloudera Management中,找到Cluster 1 (CDH 5.15.0, Parcel)下面的Hive,点击进入Hive(Cluster 1)–>操作–>下载客户端配置,下载出配置文件:hive-clientconfig.zip
4.替换配置文件。
将第3步下载的文件解压,将里面的如下四个文件,拷贝替换到Kettle目录中(替换前先保存原文件,):D:\data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp26
core-site.xml
hbase-site.xml
hdfs-site.xml
yarn-site.xml
5.下载jar包。
先删除Kettle内已有的jar包,避免版本不匹配导致问题。删除D:\data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp26\lib目录中所有hive-*开头的jar包。然后到安装Hive的服务器中,下载Hive驱动包,一般为CDH安装目录内,例:/opt/cloudera/parcels/CDH-5.15.0-1.cdh5.15.0.p0.21/lib
将所有hive开头的jar包下载出来,复制到D:\data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp26\lib文件夹中。
6.配置完成,重启Kettle。
数据抽取过程开发
一、配置Hive的数据库连接和HDFS的HadoopCluster连接。
a.配置Hive的数据库连接:
在转换的主对象树-->DB连接,右击新建。连接类型选择:Hadoop Hive 2
主机名:Hive服务器IP地址。
数据库名称:默认填写default,如果指定数据库,填写对应数据库名。
端口号:10000
用户名:hdfs (这里也可以不填,最好填hdfs)
测试是否正确连接。
b.配置HadoopCluster连接:
在转换的主对象树–>Hadoop Clusters,右击New Cluster
HDFS选项卡:HostName填写HDFS服务器的域名或者IP地址,这个要根据配置文件填写,HDFS的Hostname和Port在core-site.xml中,节点为fs.defaultFS,username填写hdfs。
JobTracker选项卡:JobTracker的Hostname和Port在yarn-site.xml中,节点为yarn.resourcemanager.address。
Zookeeper选项卡:Zookeeper的Hostname和Port在yarn-site.xml中,节点为yarn.resourcemanager.zk-address。
Oozie选项卡:根据Oozie服务器实际情况填写:http://docker05:8080/oozie。
二、开发数据抽取转换。
方案1:表输入–>表输出(数据入库非常慢)
直接查询数据库,输出到Hive中,这里可以点击表输出的SQL,生成表结构。
表输入:
SELECT T.*,SYSDATE LOAD_TIME FROM dim_day T WHERE T.START_TIME >= TRUNC(SYSDATE,'YYYY')
方案2:表输入–>Hadoop File Output(速度尚可)
数据导入HDFS中,再加载到Hive中。
加载数据:
DROP TABLE IF EXISTS dim_day;
CREATE TABLE dim_day (DAY_ID DOUBLE, DAY TIMESTAMP, DAY_NAME STRING, START_TIME TIMESTAMP, END_TIME TIMESTAMP, DAY_NUM DOUBLE, MONTH_ID DOUBLE, WORK STRING, WEEK STRING, WEEK_NUM DOUBLE, UPDATE_TIME TIMESTAMP, LOAD_TIME TIMESTAMP) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
LOAD DATA INPATH '/user/hive/warehouse/dim_day.txt' OVERWRITE INTO TABLE dim_day;