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/pig
PIG_HOME
使用当前用户来启动pig,但您必须在./bin/pig
文件中导出JAVA_HOME
和HADOOP_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*** 服务器上不起作用