在 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 GUI 的情况下在 Elastic MapReduce 上自动运行 Pig Batch 作业?
无法在 Amazon EMR 集群上使用 PIG 0.12.0 和 Hadoop 2.4.0 找到 MySql 驱动程序