Pig 的“转储”在 AWS 上不起作用

Posted

技术标签:

【中文标题】Pig 的“转储”在 AWS 上不起作用【英文标题】:Pig's "dump" is not working on AWS 【发布时间】:2016-01-06 13:40:46 【问题描述】:

我正在 AWS 的 EMR 上尝试 Pig 命令。但即使是小命令也不能像我预期的那样工作。我所做的是跟随。

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

    1,2,3
    4,2,1
    8,3,4
    4,3,3
    7,2,5
    8,4,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
    

    转储变量 A。

    grunt> dump A;
    

但是这个命令失败了。我预计这个命令会产生 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"

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

如果你想使用本地文件系统,你应该在下面的第 2 步中启动你的 pig

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"

【讨论】:

谢谢。我尝试了本地模式。但我得到不同的错误。我在帖子中添加了有关它的详细信息。 (当我使用 pig 的全路径“/usr/bin/pig”时没有区别。) 使用文件的完整路径。我认为 /home/hadoop 中没有 a.csv

以上是关于Pig 的“转储”在 AWS 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

flask-socketio 在安装了 eventlet 的 aws 上不起作用

PHP 函数 mail() 在 AWS EC2 服务器上不起作用

客户端到客户端的通信在 AWS Lightsail Debian Linux Open*** 服务器上不起作用

为啥 Https 在 EC2 上不起作用?

画布上的 CORS 在 Chrome 和 Safari 上不起作用

MediaWiki 会话和 cookie 在 CloudFlare 后面的多服务器上不起作用