通过前两篇的文章内容我们已经介绍了MapReduce的运行原理,以及WordCount实例的执行过程,接下来我们将根据我们的实际应用改写出一个清洗Log数据的MapReduce。
具体源代码请关注下面的GitHub项目
数据清洗的目标
这里我们期望将下面的track.log日志文件内容转化一下,将logs外层结构去掉,提起出来logs的内层数据,并且将原来的logs下的数组转换成多条新的日志记录。
track.log日志文件
|
|
期望清洗之后的文件内容如下
|
|
AdLog实例程序
实例程序请参考GitHub上的源代码
这里我们使用Maven来打包构建项目,同之前的WordCount实例是一个项目。我们也是将依赖的jar包也打包到birdHadoop.jar中,并且直接在pom文件中指定调用的入口类,注意这里我们修改了入口类是com.birdben.mapreduce.adlog.AdLogMain,需要在pom文件中配置如下
|
|
|
|
runAdLog.sh脚本文件
|
|
下面是执行过程中的输出
|
|
Shell脚本的最后我们将HDFS文件导出到本地系统文件,查看一下这个目录下的文件。
|
|
查看一下我们所期望的结果文件part-r-00000的内容
|
|
可以看到最终的结果是我们之前所期望的,大功告成 ^_^