如何在 Amazon EMR 上的 pig 中使用 Python 流 UDF
Posted
技术标签:
【中文标题】如何在 Amazon EMR 上的 pig 中使用 Python 流 UDF【英文标题】:How to use Python streaming UDFs in pig on Amazon EMR 【发布时间】:2014-09-04 01:09:20 【问题描述】:Pig 0.12 引入了流式 Python UDF,但它们是实验性的,因此需要 Hadoop 1。
http://pig.apache.org/docs/r0.12.1/udf.html#python-udfs
但是,亚马逊提供的唯一可以使用 pig 0.12 的 AMI 是 AMI 3.1.0,它使用 hadoop 2.4,而不是 Hadoop 1:
http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-hadoop-version.html
因此,唯一支持正确版本 pig 的 AMI 不支持正确版本的 hadoop。有没有办法让流 UDF 在 EMR 上工作?
【问题讨论】:
【参考方案1】:您可以使用引导操作在 EMR 上安装自己的 Pig 版本。您需要在 AMI 版本(2.4.5?)上创建一个没有安装 Pig 的集群 - 然后安装您喜欢的 Pig 版本(0.12)
【讨论】:
我使用预安装了 Apache Pig 0.11.1.1 的 EMR AMI 3.0.4,我只是从 tarball 中提取 Apache Pig 0.13.0 并将 PATH 更新为指向 0.13.0 而不是 0.11.0。我会假设旧 AMI 也可以使用相同的云。 这应该也可以。但是,Pig 不是 AMI 本身的一部分,而是在集群实例化期间安装的。因此,您可以将集群定义更改为不预安装它。以上是关于如何在 Amazon EMR 上的 pig 中使用 Python 流 UDF的主要内容,如果未能解决你的问题,请参考以下文章
在 Amazon EMR 中运行的 Pig 作业的引导文件的路径是啥
从 Pig UDF Java 类、Amazon EMR 中的分布式缓存访问文件
在 Amazon EMR 上为 Pig UDF 加载外部 python 模块
无法在 Amazon EMR 集群上使用 PIG 0.12.0 和 Hadoop 2.4.0 找到 MySql 驱动程序