Chinaunix首页 | 论坛 | 博客
  • 博客访问: 102049
  • 博文数量: 30
  • 博客积分: 305
  • 博客等级: 二等列兵
  • 技术积分: 320
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-09 12:31
文章分类

全部博文(30)

文章存档

2014年(3)

2013年(16)

2012年(11)

我的朋友

分类: PERL

2013-05-15 19:51:15

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

1. JSON模块的获取
    
2.  在目录 ~/lib/下解压文件
    tar -xzvf JSON-2.57.tar.gz
3. 是用JSON模块
   1. use lib ~/lib/JSON-2.57/lib  #添加库模块路径
   2. use JSON;
   之后JSON的具体用法可以参考 
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";



        
阅读(1891) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~