Pentaho Work with Big Data(六)—— 使用Pentaho MapReduce生成聚合数据集

2022-05-07 13:08:25 浏览数 (1)

本示例说明如何使用Pentaho MapReduce把细节数据转换和汇总成一个聚合数据集。当给一个关系型数据仓库或数据集市准备待抽取的数据时,这是一个常见使用场景。我们使用格式化的web日志数据作为细节数据,并且建立一个聚合文件,包含按IP和年月分组的PV数。 关于如何使用Pentaho MapReduce把原始web日志解析成格式化的记录,参考 http://blog.csdn.net/wzy0623/article/details/51145570。 一、向HDFS导入示例数据文件 将weblogs_parse.txt文件放到HDFS的/user/grid/parse/目录下(因资源有限,本示例只取了这个文件的前100行数据) 参考: http://blog.csdn.net/wzy0623/article/details/51133760 二、建立一个用于Mapper的转换 1. 新建一个转换,如图1所示。

图1

2. 编辑'MapReduce Input'步骤,如图2所示。

图2

3. 编辑'Split Fields'步骤,如图3所示。

图3

说明:“字段”如下所示,所有字段都是String类型

代码语言:javascript复制
client_ip
full_request_date
day
month
month_num
year
hour
minute
second
timezone
http_verb
uri
http_status_code
bytes_returned
referrer
user_agent

4. 编辑'User Defined Java Expression'步骤,如图4所示。

图4

说明:“Java Expression”列填写如下内容:

代码语言:javascript复制
client_ip   't'   year   't'   month_num

5. 编辑'MapReduce Output'步骤,如图5所示。

图5

将转换保存为aggregate_mapper.ktr 三、建立一个用于Reducer的转换 1. 新建一个转换,如图6所示。

图6

2. 编辑'MapReduce Input'步骤,如图7所示。

图7

3. 编辑'Group by'步骤,如图8所示。

图8

4. 编辑'MapReduce Output'步骤,如图9所示。

图9

将转换保存为aggregate_reducer.ktr 四、建立一个调用MapReduce步骤的作业,使用mapper和reducer转换。 1. 新建一个作业,如图10所示。

图10

2. 编辑'Pentaho MapReduce'作业项,如图11到图14所示。

图11

图12

图13

图14

说明: . 需要编辑“Mapper”、“Reducer”、“Job Setup”和“Cluster”四个标签 . hadoop_local是已经建立好的Hadoop Clusters连接,设置如图15所示

图15

建立过程参考 http://blog.csdn.net/wzy0623/article/details/51086821。 将作业保存为aggregate_mr.kjb 五、执行作业并验证输出 1. 启动hadoop集群 # 启动HDFS $HADOOP_HOME/sbin/start-dfs.sh # 启动yarn $HADOOP_HOME/sbin/start-yarn.sh # 启动historyserver $HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver 2. 执行作业,日志如图16所示。

图16

从图16可以看到,作业已经成功执行。 3. 检查Hadoop的输出文件,结果如图17所示。

图17 从图17可以看到,/user/grid/aggregate_mr目录下生成了名为part-00000输出文件,文件中包含按IP和年月分组的PV数。 参考: http://wiki.pentaho.com/display/BAD/Using Pentaho MapReduce to Generate an Aggregate Dataset

0 人点赞