Pig的“转储”不适用于AWS

时间:2016-01-06 13:40:47

标签: amazon-web-services apache-pig

我在AWS的EMR上尝试Pig命令。但即便是小命令也无法按预期工作。我做的是跟随。

  1. 将以下6行保存为~/a.csv

    1,2,3
    4,2,1
    8,3,4
    4,3,3
    7,2,5
    8,4,3
    
  2. Start Pig

  3. 加载csv文件。

    grunt> A = load './a.csv' using PigStorage(',');
    16/01/06 13:09:09 INFO Configuration.deprecation: fs.default.name is deprecated. Instead, use fs.defaultFS
    
  4. 转储变量A.

    grunt> dump A;
    
  5. 但是这个命令失败了。我希望这个命令产生6个元组,这些元组在a.csv中描述。转储命令很多INFO行和ERROR行。 ERROR系列如下。

    91711 [main] ERROR org.apache.pig.tools.pigstats.PigStats  - ERROR 0: java.lang.IllegalStateException: Job in state DEFINE instead of RUNNING
    16/01/06 13:10:08 ERROR pigstats.PigStats: ERROR 0: java.lang.IllegalStateException: Job in state DEFINE instead of RUNNING
    91711 [main] ERROR org.apache.pig.tools.pigstats.mapreduce.MRPigStatsUtil  - 1 map reduce job(s) failed!
    16/01/06 13:10:08 ERROR mapreduce.MRPigStatsUtil: 1 map reduce job(s) failed!
    
    [...skipped...]
    
    Input(s):
    Failed to read data from "hdfs://ip-xxxx.eu-central-1.compute.internal:8020/user/hadoop/a.csv"
    
    Output(s):
    Failed to produce result in "hdfs://ip-xxxx.eu-central-1.compute.internal:8020/tmp/temp-718505580/tmp344967938"
    
    [...skipped...]
    
    91718 [main] ERROR org.apache.pig.tools.grunt.Grunt  - ERROR 1066: Unable to open iterator for alias A. Backend error : java.lang.IllegalStateException: Job in state DEFINE instead of RUNNING
    16/01/06 13:10:08 ERROR grunt.Grunt: ERROR 1066: Unable to open iterator for alias A. Backend error : java.lang.IllegalStateException: Job in state DEFINE instead of RUNNING
    

    (我已更改类似IP的描述。)错误消息似乎表示加载运算符也失败。

    我不知道为什么转储运算符失败了。你能给我一些建议吗?

    请注意

    • 我也用a.csv中的TAB代替逗号并执行A = load './a-tab.csv';,但它没有帮助。
    • $ pig -x local - > A = load 'a.csv' using PigStorage(','); - > dump A;。然后

      Input(s):
      Failed to read data from "file:///home/hadoop/a.csv"
      

      如果我使用完整路径,即A = load '/home/hadoop/a.csv' using PigStorage(',');,那么我得到

      Input(s):
      Failed to read data from "/home/hadoop/a.csv"
      

2 个答案:

答案 0 :(得分:0)

如果您想使用本地文件系统,您必须在步骤2中启动您的猪,如下所示

bin/pig -x local

如果您从bin/pig开始,将在DFS中搜索文件。这就是您收到错误Failed to read data from "hdfs://ip-xxxx.eu-central-1.compute.internal:8020/user/hadoop/a.csv"

的原因

答案 1 :(得分:0)

我遇到了同样的问题。您可以尝试su root使用root用户,然后./bin/pig PIG_HOME使用mapreduce模式启动pig。另一方面,您也可以在sudo ./bin/pig PIG_HOME处使用当前用户开始查看,但您必须在JAVA_HOME中导出HADOOP_HOME./bin/pig文件。