目录
一、把数据从 HDFS 抽取到 RDBMS
1. 下载示例文件
2. 将文件上传到 HDFS
用下面的命令把解压缩后的 weblogs_aggregate.txt 文件放到 HDFS 的 /user/grid/aggregate_mr/ 目录下。
hadoop fs -put weblogs_aggregate.txt /user/grid/aggregate_mr/
3. 打开 PDI 新建一个转换
如图1 所示:
图1
4. 编辑 Hadoop File Input 步骤
如图2 - 图4 所示:
图2
图3
图4
说明:
- PDI 连接 Hadoop 集群参考:Pentaho Work with Big Data(一)—— Kettle 连接 Hadoop集群
- 以 tab 作为分隔符。
5. 编辑 Table Output 步骤
如图5 所示:
图5
说明:
- mysql_local 是已经建好的一个本地 mysql 数据库连接,设置如图6 所示。
图6
- “数据库字段”标签不需要设置。
6. 执行下面的脚本建立 mysql 的表
use test;
create table aggregate_hdfs (
client_ip varchar(15),
year smallint,
month_num tinyint,
pageviews bigint
);
7. 保存并执行转换
日志如图7 所示:
图7
从图7 可以看到,转换已经成功执行。
8. 查询 mysql 表
结果如图8 所示:
图8
从图8 可以看到,数据已经从 HDFS 抽取到了 mysql 表中。
二、把数据从 Hive 抽取到 RDBMS
1. 执行下面的脚本建立 hive 表
create table 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. 下载示例文件
3. 将文件上传到 HDFS
用下面的命令把解压缩后的 weblogs_parse.txt 文件放到 HDFS 的 /user/grid/parse/ 目录下。
hadoop fs -put weblogs_parse.txt /user/hive/warehouse/test.db/weblogs/
至此,hive 表里的数据如图9 所示:
图9
4. 打开 PDI 新建一个转换
如图10 所示:
图10
5. 编辑 Table input 步骤
如图11 所示:
图11
说明:hive_101 是已经建好的一个 hive 数据库连接,设置如图12 所示。
图12
说明:PDI 连接 Hadoop hive 2,参考:kettle 5.1.0 连接 Hadoop hive 2 (hive 1.2.1)
6. 编辑 Table output 步骤
如图13 所示:
图13
说明:
- mysql_local 是已经建好的一个本地 mysql 数据库连接,设置如图6 所示。
- “数据库字段”标签不需要设置。
7. 执行下面的脚本建立 mysql 的表
use test;
create table aggregate_hive (
client_ip varchar(15),
year varchar(4),
month varchar(10),
month_num tinyint,
pageviews bigint
);
8. 保存并执行转换
日志如图14 所示:
图14
从图14 可以看到,转换已经成功执行。
9. 查询 mysql 表
结果如图15 所示:
图15
从图15 可以看到,数据已经从 hive 表抽取到了 mysql 表中。