本文主要介绍,如何使用JSON模块,以及在hadoop中如何添加JSON模块

1. JSON模块的获取
    http://search.cpan.org/~makamaka/JSON-2.57/lib/JSON.pm
2.  在目录 ~/lib/下解压文件
    tar -xzvf JSON-2.57.tar.gz
3. 是用JSON模块
   1. use lib ~/lib/JSON-2.57/lib  #添加库模块路径
   2. use JSON;
   之后JSON的具体用法可以参考 http://search.cpan.org/~makamaka/JSON-2.57/lib/JSON.pm
4. hadoop中添加json模块
   hadoop中本身是没有JSON模块的,所以需要添加,下面提供两种方法
   方法一
          a. 先把~/lib/JSON-2.57/lib/目录打包
               cd ~/lib/JSON-2.57/lib/ && tar -czf JSON.tar JSON JSON.pm
          b. mapper && reducer程序中对这个压缩包解压,之后在调用相应的perl程序

点击(此处)折叠或打开

  1. tar -xzf JSON.tar
  2. perl testJson.pl  #此perl程序不用use lib;
           c. hadoop streming 中使用-file,上传.tar文件               

点击(此处)折叠或打开

  1. hadoop streaming
  2.         -jobconf mapred.map.tasks=1
  3.         -jobconf mapred.reduce.tasks=1
  4.         -jobconf mapred.job.name="TEST JSON"
  5.         -input "/tmp/testJson.txt"
  6.         -output "/tmp/testJson/"
  7.         -mapper "sh testJsonMapper.sh"
  8.         -reducer "cat"
  9.         -file "./testJson.pl"
  10.         -file "./testJsonMapper.sh"
  11.         -file "./JSON.tar"
   方法二
        使用-cacheArchive这个参数
        a. 把JSON模块打包成jar各式
           cd ~/lib/JSON-2.57/lib/  &&   jar -cvf JSON.jar JSON.pm JSON
        b. 把jar文件上传大集群的 /tmp/JSON/ 目录下面 【其它目录也可以】
        c. 按照如下方式执行程序:

点击(此处)折叠或打开

  1. hadoop streaming
  2.         -cacheArchive /tmp/zhangkaiyong/JSON/JSON.jar
  3.         -jobconf mapred.map.tasks=1
  4.         -jobconf mapred.reduce.tasks=1
  5.         -jobconf mapred.job.name="TEST JSON"
  6.         -input "/tmp/testJson.txt"
  7.         -output "/tmp/testJson/"
  8.         -mapper "perl testJson.pl"
  9.         -reducer "cat"
  10.         -file "./testJson.pl"
        上面两个例子中的testJson.pl的代码如下:
        

点击(此处)折叠或打开

  1. use strict;
  2. use JSON;
  3. print "hello,worldn";



        
09-25 22:17