在 EMR 上运行 Pig 脚本

Posted

技术标签:

【中文标题】在 EMR 上运行 Pig 脚本【英文标题】:Running Pig Script on EMR 【发布时间】:2015-02-27 02:08:54 【问题描述】:

所以我使用以下文件作为输入: https://svn.apache.org/repos/asf/pig/trunk/tutorial/data/excite-small.log

我现在的代码是

-- FileName: excite-small.log
log  = LOAD 'excite-small.log' AS (user, timestamp, query);
grpd = GROUP log BY user;
cntd = FOREACH grpd GENERATE group, COUNT(log);
STORE cntd INTO 'output'

我使用http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-pig-launch.html 中提到的步骤在 EMR 上运行此作业

**我设置了以下参数**

1. For Script Location: s3://mybucket/test.pig
2. For Input Location:  s3://mybucket/excite-small.log
3. For Output Location: s3://mybucket/
4. Arguments: Blank

当我运行这个作业时,我收到一个错误 Input path does not exist。我认为这与REGISTER 有关,但我不太确定。有人可以建议我做错了吗?

【问题讨论】:

【参考方案1】:

在您的 PIG 脚本中,完整引用输入文件,例如:

log  = LOAD 's3://mybucket/excite-small.log' AS (user, timestamp, query);

或者,使用传入的INPUT路径:

log = LOAD '$INPUT' AS (user, timestamp, query);

在这里找到了一个很好的解释:

Analyzing Logs with Pig and Elastic MapReduce

【讨论】:

以上是关于在 EMR 上运行 Pig 脚本的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Amazon EMR 集群上使用 PIG 0.12.0 和 Hadoop 2.4.0 找到 MySql 驱动程序

在 EMR 中,与 HBase 集成的 Pig 脚本在尝试加载数据时失败

Pig 脚本在 group by 语句中挂起

使用 piggybank 和 AvroStorage 解决 EMR 问题

Pig 脚本无法使用 Amazon EMR

在 Amazon EMR 中运行的 Pig 作业的引导文件的路径是啥