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程序
点击(此处)折叠或打开
- tar -xzf JSON.tar
- perl testJson.pl #此perl程序不用use lib;
点击(此处)折叠或打开
- hadoop streaming
- -jobconf mapred.map.tasks=1
- -jobconf mapred.reduce.tasks=1
- -jobconf mapred.job.name="TEST JSON"
- -input "/tmp/testJson.txt"
- -output "/tmp/testJson/"
- -mapper "sh testJsonMapper.sh"
- -reducer "cat"
- -file "./testJson.pl"
- -file "./testJsonMapper.sh"
- -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. 按照如下方式执行程序:
点击(此处)折叠或打开
- hadoop streaming
- -cacheArchive /tmp/zhangkaiyong/JSON/JSON.jar
- -jobconf mapred.map.tasks=1
- -jobconf mapred.reduce.tasks=1
- -jobconf mapred.job.name="TEST JSON"
- -input "/tmp/testJson.txt"
- -output "/tmp/testJson/"
- -mapper "perl testJson.pl"
- -reducer "cat"
- -file "./testJson.pl"
点击(此处)折叠或打开
- use strict;
- use JSON;
- print "hello,worldn";