Pentaho Work with Big Data(五)—— 格式化原始 web 日志

本文介绍如何使用Pentaho MapReduce工具解析Web服务器日志,并将其转换为结构化数据,便于进一步的数据分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、向 HDFS 导入示例数据文件

二、建立一个用于 Mapper 的转换

1. 新建一个转换

2. 编辑 MapReduce Input 步骤

3. 编辑 Regex Evaluation 步骤

4. 编辑 Filter Rows 步骤

5. 编辑 Value Mapper 步骤

6. 编辑 User Defined Java Expression 步骤

7. 编辑 MapReduce Output 步骤

三、建立一个调用 MapReduce 步骤的作业

1. 新建一个作业

2. 编辑 Pentaho MapReduce 作业项

四、执行作业并验证输出

1. 启动 hadoop 集群

2. 执行作业

3. 检查 Hadoop 的输出文件

参考:


        本示例说明如何使用 Pentaho MapReduce 把原始 web 日志解析成格式化的记录。

一、向 HDFS 导入示例数据文件

        将 weblogs_rebuild.txt 文件放到 HDFS 的 /user/grid/raw/ 目录下(因资源有限,本示例只取了这个文件的前 10 行数据)参考:Pentaho Work with Big Data(三)—— 向 Hadoop 集群导入数据

二、建立一个用于 Mapper 的转换

1. 新建一个转换

        如图1 所示:

图1

2. 编辑 MapReduce Input 步骤

        如图2 所示:

图2

3. 编辑 Regex Evaluation 步骤

        如图3 所示:

图3

        说明:

  • “正则表达式”里面填写如下内容:
^([^\s]{7,15})\s            # client_ip
-\s                         # unused IDENT field
-\s                         # unused USER field
\[((\d{2})/(\w{3})/(\d{4})  # request date dd/MMM/yyyy
:(\d{2}):(\d{2}):(\d{2})\s([-+ ]\d{4}))\]
                            # request time :HH:mm:ss -0800
\s"(GET|POST)\s             # HTTP verb
([^\s]*)                    # HTTP URI
\sHTTP/1\.[01]"\s           # HTTP version


(\d{3})\s                   # HTTP status code
(\d+)\s                     # bytes returned
"([^"]+)"\s                 # referrer field


"                           # User agent parsing, always quoted.
"?                          # Sometimes if the user spoofs the user_agent, they incorrectly quote it.
(                           # The UA string
  [^"]*?                    # Uninteresting bits
  (?:
    (?:
     rv:                    # Beginning of the gecko engine version token
     (?=[^;)]{3,15}[;)])    # ensure version string size
     (                      # Whole gecko version
       (\d{1,2})                   # version_component_major
       \.(\d{1,2}[^.;)]{0,8})      # version_component_minor
       (?:\.(\d{1,2}[^.;)]{0,8}))? # version_component_a
       (?:\.(\d{1,2}[^.;)]{0,8}))? # version_component_b
     )
     [^"]*                  # More uninteresting bits
    )
   |
    [^"]*                   # More uninteresting bits
  )
)                           # End of UA string
"?
"
  • “捕获组(Capture Group)字段”如下所示,所有字段都是 String 类型
client_ip
full_request_date
day
month
year
hour
minute
second
timezone
http_verb
uri
http_status_code
bytes_returned
referrer
user_agent
firefox_gecko_version
firefox_gecko_version_major
firefox_gecko_version_minor
firefox_gecko_version_a
firefox_gecko_version_b 

4. 编辑 Filter Rows 步骤

        如图4 所示:

图4

5. 编辑 Value Mapper 步骤

        如图5 所示:

图5

6. 编辑 User Defined Java Expression 步骤

        如图6 所示:

图6

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

client_ip + '\t' + full_request_date + '\t' + day + '\t' + month + '\t' + month_num + '\t' + year + '\t' + hour + '\t' + minute + '\t' + second + '\t' + timezone + '\t' + http_verb + '\t' + uri + '\t' + http_status_code + '\t' + bytes_returned + '\t' + referrer + '\t' + user_agent

7. 编辑 MapReduce Output 步骤

        如图7 所示:

图7

        将转换保存为 weblog_parse_mapper.ktr。

三、建立一个调用 MapReduce 步骤的作业

        使用 mapper 转换,仅运行 map 作业。

1. 新建一个作业

        如图8 所示:

图8

2. 编辑 Pentaho MapReduce 作业项

        如图9 - 图11 所示:

图9

图10

图11

        说明:

图12

       将作业保存为 weblogs_parse_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. 执行作业

        日志如图13 所示:

图13

        从图13 可以看到,作业已经成功执行。

3. 检查 Hadoop 的输出文件

        结果如图14 所示:

图14

        从图14 可以看到,/user/grid/parse 目录下生成了名为 part-00000 和 part-00001 的两个输出文件。

参考:

http://wiki.pentaho.com/display/BAD/Using+Pentaho+MapReduce+to+Parse+Weblog+Data

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值