
如何在Hadoop的MapReduce程序中处理JSON文件
需要解析JSON配置文件,简化Java程序和处理逻辑。但是Hadoop本身似乎没有内置对JSON文件的解析功能,不得不求助于第三方JSON工具包。这里选择json-simple实现功能。
一简介:
(1):在Hadoop上执行Java程序的命令如下所示:
(2):my-mapreduce.jar是进行日志处理的MapReduce程序。现在假定需要在其中处理JSON格式的配置文件,这里忽略如何在Hadoop集群读取文件的细节,只关注如何使用JSON工具包。下面是简单的HelloWorld程序:
在HelloWorld程序中,只简单修改JSON对象,将其内容打印输出,从而验证解析修改JSON内容的过程。
二编译:
由于MapReduce程序需提交到Hadoop集群执行,所以HelloWorld依赖的json-simple包必须存在于集群的classpath路径中,如果集群上没有对应的jar包。执行HelloWorld会出现如下异常:
Exception in thread "main" java.lang.NoClassDefFoundError: org/json/simple/JSONObject
简单的解决方法是将json-simple包直接和HelloWorld编译结果一起打包,然后即可使用命令hadoop jar HelloWorld.jar执行。需将json-simple的jar包解压再同HelloWorld打包。
编译命令如下所示:
三执行HelloWorld: