【ETL工具】Kettle 整合大数据平台(Hadoop、Hive、HBase)

目录

一、Kettle整合Hadoop

1、 整合步骤

2、Hadoop file input组件

3、Hadoop file output组件

二、Kettle整合Hive

1、初始化数据

2、 kettle与Hive 整合配置

3、从hive 中读取数据

4、把数据保存到hive数据库

5、Hadoop Copy Files组件

6、执行Hive的HiveSQL语句

三、Kettle整合HBase

1、HBase初始化

2. HBase input组件

3、HBase output组件


一、Kettle整合Hadoop


环境  kettle 8.2 版本

kettle国内镜像下载地址:http://mirror.bit.edu.cn/pentaho/Pentaho%208.2/client-tools/ 

1、 整合步骤


1. 确保Hadoop的环境变量设置好HADOOP_USER_NAME为root

2. 从hadoop下载核心配置文件

/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/hdfs-site.xml
/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/core-site.xml

3. 把hadoop核心配置文件放入kettle目录

data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp26

4. 修改 data-integration\plugins\pentaho-big-data-plugin\plugin.properties文件

  • 修改plugin.properties
active.hadoop.configuration=hdp26

5. 创建Hadoop clusters

   打红色的对勾的缺一不可,node01  失效要  配置 windows 的 hosts 映射

2、Hadoop file input组件


需求:从Hadoop文件系统读取/hadoop/test/1.txt文件,把数据输入到Excel中

1.  配置Hadoop File Input组件

2. Excel 配置输出路径 即可

3、Hadoop file output组件


需求:读取 user.json 把数据写入到hdfs文件系统的的/hadoop/test/2.txt中。

1. 配置 JSON 输入组件

2. 配置Hadoop file output组件


二、Kettle整合Hive


1、初始化数据


1. 连接hive

2. 创建并切换数据库

show databases; 			-- 查询数据库

drop database test cascade; -- 强制删除数据库

create database test;		-- 创建数据库
use test;					-- 切换数据库

3. 创建表

CREATE TABLE a (
   a int,
   b int
)
ROW format delimited
fields terminated BY ','
stored AS  TEXTFILE;

4. 创建数据文件

vim a.txt
1,11
2,22
3,33

5. 从文件中加载数据到表

load data local inpath '/export/datas/a.txt' overwrite into table a;

2、 kettle与Hive 整合配置


1. 从虚拟机下载Hadoop的jar包

/export/servers/hadoop-2.7.5/share/hadoop/common/

2. 把jar包放置在\data-integration\lib目录下

3. 重启kettle,重新加载生效

3、从hive 中读取数据


  • hive数据库是通过jdbc来进行连接,可以通过表输入控件来获取数据。

需求:从hive数据库的test库的a表中获取数据,并把数据保存到Excel中。

实现步骤:

1. 设计一下kettle组件结构

2. 配置表输入组件

3. 配置表输出

4、把数据保存到hive数据库


hive数据库是通过jdbc来进行连接,可以通过表输出控件来保存数据。

需求:从Excel中读取数据,把数据保存在hive数据库的test数据库的 a 表。

实现步骤:

1. 配置 Excel输入组件

2. 配置表输出组件

5、Hadoop Copy Files组件


Kettle作业中的Hadoop Copy Files作业项可以将本地的文件上传到HDFS,也可以向Hive导入数据。

需求:资料\kettle测试数据\weblogs_parse.txt文件导入到Hive表中

资源下载地址:Pentaho Community Wiki

实现步骤:

1. 创建表

---创建weblogs表语句

create table test.weblogs (
client_ip    string,
full_request_date string,
day    string,
month    string,
month_num int,
year    string,
hour    string,
minute    string,
second    string,
timezone    string,
http_verb    string,
uri    string,
http_status_code    string,
bytes_returned        string,
referrer        string,
user_agent    string
)
row format delimited
fields terminated by '\t';

2. 配置Hadoop copy files

3. 测试数据是否已经抽取到Hive中

数据比较多  , 笔记本 内存有很小 ,跑起来 太费劲了

6、执行Hive的HiveSQL语句


Kettle中可以执行 Hive 的HiveSQL语句,使用作业的SQL脚本。

需求:聚合查询weblogs表(以IP和年月分组统计的PV数据),同时建立一个新表保存查询数据。

实现步骤:

1. 拖取组件,配置 SQL 组件

2. 测试数据是否生成


三、Kettle整合HBase


1、HBase初始化


从hbase集群中复制  hbase-site.xml 文件到 kettle 安装目录下的 “plugins/pentaho-big-data-plugin/hadoop-configurations/hdp26”  目录下。

1. 进入HBase shell, 查看状态

2. 创建表,并查看

-- 创建表
create 't1','f1'

-- 查看表
describe 't1'

-- 添加数据
put 't1','rowkey001','f1:name','zhangsan'

-- 获取数据
get 't1','rowkey001'

2. HBase input组件


Kettle提供了HBase input控件来读取HBase数据库中的数据。

需求:读取HBase数据库中表里面的数据,把数据保存到Excel

实现步骤:

1. 准备一些测试数据

create 't_user','cf'

put 't_user','392456197008193000','cf:name','张三'
put 't_user','392456197008193000','cf:age','20'
put 't_user','392456197008193000','cf:gender','0'
put 't_user','392456197008193000','cf:province','北京市'
put 't_user','392456197008193000','cf:city','昌平区'
put 't_user','392456197008193000','cf:region','回龙观'
put 't_user','392456197008193000','cf:phone','18589407692'
put 't_user','392456197008193000','cf:birthday','1970-08-19'
put 't_user','392456197008193000','cf:hobby','美食;篮球;足球'
put 't_user','392456197008193000','cf:register_date','2018-08-06 09:44:43'

put 't_user','267456198006210000','cf:name','李四'
put 't_user','267456198006210000','cf:age','25'
put 't_user','267456198006210000','cf:gender','1'
put 't_user','267456198006210000','cf:province','河南省'
put 't_user','267456198006210000','cf:city','郑州市'
put 't_user','267456198006210000','cf:region','郑东新区'
put 't_user','267456198006210000','cf:phone','18681109672'
put 't_user','267456198006210000','cf:birthday','1980-06-21'
put 't_user','267456198006210000','cf:hobby','音乐;阅读;旅游'
put 't_user','267456198006210000','cf:register_date','2017-04-07 09:14:13'

put 't_user','892456199007203000','cf:name','王五'
put 't_user','892456199007203000','cf:age','24'
put 't_user','892456199007203000','cf:gender','1'
put 't_user','892456199007203000','cf:province','湖北省'
put 't_user','892456199007203000','cf:city','武汉市'
put 't_user','892456199007203000','cf:region','汉阳区'
put 't_user','892456199007203000','cf:phone','18798009102'
put 't_user','892456199007203000','cf:birthday','1990-07-20'
put 't_user','892456199007203000','cf:hobby','写代码;读代码;算法'
put 't_user','892456199007203000','cf:register_date','2016-06-08 07:34:23'

put 't_user','492456198712198000','cf:name','赵六'
put 't_user','492456198712198000','cf:age','26'
put 't_user','492456198712198000','cf:gender','2'
put 't_user','492456198712198000','cf:province','陕西省'
put 't_user','492456198712198000','cf:city','西安市'
put 't_user','492456198712198000','cf:region','莲湖区'
put 't_user','492456198712198000','cf:phone','18189189195'
put 't_user','492456198712198000','cf:birthday','1987-12-19'
put 't_user','492456198712198000','cf:hobby','购物;旅游'
put 't_user','492456198712198000','cf:register_date','2016-01-09 19:15:53'

2. 配置 HBase Input 组件

返回到  configure query ,  下面 我们使用 "create a tuple template " 模板 导出到  Excel中的 数据并没有 展开,可能不是我们想要的结果, 我们自己 设计映射 字段关系。

查看结果

 我们使用 "create a tuple template " 模板 导出到  Excel中的 数据并没有 展开,不是我们想要的结果, 我们自己 设计映射 字段关系,因为  HBase 的设计 就是  rowkey 的  column Family 下有很多的 column 自动生成 的模板 是 不能将数据 展开的。

3、HBase output组件


Kettle提供了“HBase output”控件来保存数据到 HBase 数据库中。

需求:从 user.json 中读取数据,把数据保存在HBase的t_user_2表中实现步骤:

[
    {
        "id": "392456197008193000",
        "name": "张三",
        "age": 20,
        "gender": 0,
        "province": "北京市",
        "city": "昌平区",
        "region": "回龙观",
        "phone": "18589407692",
        "birthday": "1970-08-19",
        "hobby": "美食;篮球;足球1",
        "register_date": "2018-08-06 09:44:43"
    },
    {
        "id": "267456198006210000",
        "name": "李四",
        "age": 25,
        "gender": 1,
        "province": "河南省",
        "city": "郑州市",
        "region": "郑东新区",
        "phone": "18681109672",
        "birthday": "1980-06-21",
        "hobby": "音乐;阅读;旅游",
        "register_date": "2017-04-07 09:14:13"
    },
    {
        "id": "892456199007203000",
        "name": "王五",
        "age": 24,
        "gender": 1,
        "province": "湖北省",
        "city": "武汉市",
        "region": "汉阳区",
        "phone": "18798009102",
        "birthday": "1990-07-20",
        "hobby": "写代码;读代码;算法",
        "register_date": "2016-06-08 07:34:23"
    },
    {
        "id": "492456198712198000",
        "name": "赵六",
        "age": 26,
        "gender": 2,
        "province": "陕西省",
        "city": "西安市",
        "region": "莲湖区",
        "phone": "18189189195",
        "birthday": "1987-12-19",
        "hobby": "购物;旅游",
        "register_date": "2016-01-09 19:15:53"
    },
    {
        "id": "392456197008193000",
        "name": "张三",
        "age": 20,
        "gender": 0,
        "province": "北京市",
        "city": "昌平区",
        "region": "回龙观",
        "phone": "18589407692",
        "birthday": "1970-08-19",
        "hobby": "美食;篮球;足球1",
        "register_date": "2018-08-06 09:44:43"
    },
    {
        "id": "392456197008193000",
        "name": "张三",
        "age": 20,
        "gender": 0,
        "province": "北京市",
        "city": "昌平区",
        "region": "回龙观",
        "phone": "18589407692",
        "birthday": "1970-08-19",
        "hobby": "美食;篮球;足球1",
        "register_date": "2018-08-06 09:44:43"
    }
	
]

实现步骤:

1. 配置HBase output组件

2.  配置kettle数据流与HBase映射关系

     表不能存在 创建 即可 ,不用提前创建

查看结果

   到目前  位置,我们就 将  kettle  与 Hadoop,Hive, HBase 整合完成,并且 演示了 基本的案例操作。 

遇到的问题:

  •  IP 的在 Windows在映射 在 System32  中的  hosts 中添加 
  • zookeeper  ,HBase  启动 正常 ,报错了  去看看是否挂掉,HMaster  时间久了不用, 好像就挂了 

------------------------------------ 感谢 点赞!-----------------------------------------

------------------------------------ 感谢 点赞!-----------------------------------------

------------------------------------ 感谢 点赞!-----------------------------------------

  • 5
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿龙先生啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值