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

Posted

技术标签:

【中文标题】在 Amazon EMR 中运行的 Pig 作业的引导文件的路径是啥【英文标题】:What is the path for a bootstrapped file for a Pig job running in Amazon EMR在 Amazon EMR 中运行的 Pig 作业的引导文件的路径是什么 【发布时间】:2015-09-02 20:31:04 【问题描述】:

我在我的 EMR 作业中引导一个数据文件。引导成功,文件被复制到具有正确权限的/home/hadoop/contents/文件夹中。

但是,当我尝试在 Pig 脚本中访问它时,如下所示:

userdidstopick = load '/home/hadoop/contents/UserIdsToPick.txt' AS (uid:chararray); 

我收到输入路径不存在的错误:

 hdfs://10.183.166.176:9000/home/hadoop/contents/UserIdsToPick.txt

在运行 Ruby 作业时,始终可以在 /home/hadoop/contents/ 文件夹下访问引导文件,并且一切都对我有用。

Pig 有什么不同吗?

【问题讨论】:

【参考方案1】:

默认情况下,EMR 上的 Pig 配置为访问 HDFS 位置而不是本地文件系统。错误显示 HDFS 位置。

有两种方法可以解决这个问题:

    要么复制 S3 上的文件,要么直接从 s3 加载文件

    userdidstopick = load 's3_bucket_location/UserIdsToPick.txt' AS (uid:chararray);

    或者您可以先将文件复制到HDFS(而不是本地文件系统)上,然后直接使用它作为您今天正在做的路径。

我更喜欢第一个选项。

【讨论】:

以上是关于在 Amazon EMR 中运行的 Pig 作业的引导文件的路径是啥的主要内容,如果未能解决你的问题,请参考以下文章

amazon emr pig:使用参数文件

如何在没有 Amazon GUI 的情况下在 Elastic MapReduce 上自动运行 Pig Batch 作业?

在 Amazon EMR-4 上的 Tez 上运行 Pig

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

如何在 Amazon EMR 上的 pig 中使用 Python 流 UDF

在 Amazon EMR 上为 Pig UDF 加载外部 python 模块