如何使用apache pig在hadoop集群上加载文件?

时间:2012-02-29 00:20:37

标签: hadoop apache-pig

我有一个猪脚本,需要从本地hadoop集群加载文件。我可以使用hadoop命令列出文件:hadoop fs -ls / repo / mydata,` 但是当我试图在猪脚本中加载文件时,它失败了。 load语句是这样的:

in = LOAD '/repo/mydata/2012/02' USING PigStorage() AS (event:chararray, user:chararray)

错误信息是:

Message: org.apache.pig.backend.executionengine.ExecException: ERROR 2118: Input path does not exist: file:/repo/mydata/2012/02

任何想法?感谢

3 个答案:

答案 0 :(得分:4)

我的建议:

  1. 在hdfs中创建一个文件夹:hadoop fs -mkdir /pigdata

  2. 将文件加载到创建的hdfs文件夹:hadoop fs -put /opt/pig/tutorial/data/excite-small.log /pigdata

  3. (或者你可以从grunt shell中做到grunt> copyFromLocal /opt/pig/tutorial/data/excite-small.log /pigdata

    1. 执行猪拉丁文:

         grunt> set debug on
      
         grunt> set job.name 'first-p2-job'
      
         grunt> log = LOAD 'hdfs://hostname:54310/pigdata/excite-small.log' AS 
                    (user:chararray, time:long, query:chararray); 
         grunt> grpd = GROUP log BY user; 
         grunt> cntd = FOREACH grpd GENERATE group, COUNT(log); 
         grunt> STORE cntd INTO 'output';
      
    2. 输出文件将存储在hdfs://hostname:54310/pigdata/output

答案 1 :(得分:1)

我遇到了同样的问题..请在下面找到我的建议:

  1. 要开始处理PIG,请输入:    [root @ localhost training] #pig -x local

  2. 现在按以下示例键入load语句:  的咕噜> a = LOAD'/home/training/pig/TempFile.txt'使用PigStorage(',')为(c1:chararray,c2:chararray,c3:chararray);

答案 2 :(得分:1)

摆脱" ="两侧的空间。 in = LOAD' / repo / mydata / 2012/02'使用PigStorage()AS(事件:chararray,用户:chararray)