使用Kettle向CDH集群中Hive导入数据表

使用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

使用Kettle向CDH集群中Hive导入数据表_第1张图片
2.修改Kettle的D:\data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp23(这个文件夹名字可能不一样),这里把hdp23改成hdp26即可。
使用Kettle向CDH集群中Hive导入数据表_第2张图片
3.下载Hive客户端配置。
在集群管理界面Cloudera Management中,找到Cluster 1 (CDH 5.15.0, Parcel)下面的Hive,点击进入Hive(Cluster 1)–>操作–>下载客户端配置,下载出配置文件:hive-clientconfig.zip
使用Kettle向CDH集群中Hive导入数据表_第3张图片
使用Kettle向CDH集群中Hive导入数据表_第4张图片

使用Kettle向CDH集群中Hive导入数据表_第5张图片
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文件夹中。
使用Kettle向CDH集群中Hive导入数据表_第6张图片
使用Kettle向CDH集群中Hive导入数据表_第7张图片
6.配置完成,重启Kettle。

数据抽取过程开发

一、配置Hive的数据库连接和HDFS的HadoopCluster连接。
    a.配置Hive的数据库连接:
        在转换的主对象树-->DB连接,右击新建。连接类型选择:Hadoop Hive 2
        主机名:Hive服务器IP地址。
        数据库名称:默认填写default,如果指定数据库,填写对应数据库名。
        端口号:10000
        用户名:hdfs (这里也可以不填,最好填hdfs)
        测试是否正确连接。

使用Kettle向CDH集群中Hive导入数据表_第8张图片
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。
使用Kettle向CDH集群中Hive导入数据表_第9张图片
二、开发数据抽取转换。
方案1:表输入–>表输出(数据入库非常慢)
直接查询数据库,输出到Hive中,这里可以点击表输出的SQL,生成表结构。

表输入:
SELECT T.*,SYSDATE LOAD_TIME FROM dim_day T WHERE T.START_TIME >= TRUNC(SYSDATE,'YYYY')

使用Kettle向CDH集群中Hive导入数据表_第10张图片
使用Kettle向CDH集群中Hive导入数据表_第11张图片
这里写图片描述
方案2:表输入–>Hadoop File Output(速度尚可)
数据导入HDFS中,再加载到Hive中。
使用Kettle向CDH集群中Hive导入数据表_第12张图片
使用Kettle向CDH集群中Hive导入数据表_第13张图片
HDFS1
使用Kettle向CDH集群中Hive导入数据表_第14张图片
使用Kettle向CDH集群中Hive导入数据表_第15张图片
使用Kettle向CDH集群中Hive导入数据表_第16张图片

加载数据:
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;

参考: https://blog.csdn.net/zzq900503/article/details/79077718

你可能感兴趣的:(kettle)