我正在通过控制台启动 EMR 集群。
控制台自动在 Arguments 字段中添加了 -files s3://jmilloy/milp_mapper.py
,这是我为映射器提供的位置。我在任何地方都找不到记录的 -file
选项。它有什么作用?为什么会自动添加?如果我删除它会怎样?我可以将我的脚本需要的 S3 中的其他文件放在那里吗?
最佳答案
简答:
-files
不是 EMR 标志,而是一种将文件添加到 Distributed Cache 的方法.
长版:
Hadoop 使用称为 GenricOptionsParser 的东西用于解析命令行选项。当您使用 python 编写映射器或缩减器时,这意味着 Hadoop 正在使用称为 Streaming API 的东西。运行作业。因此,当您运行 Streaming Job 时,您必须使用 -files
命令行选项传入您的 Mapper 和 Reducers 在文件系统(也可能是 S3)中的路径,一旦您这样做因此 Hadoop 会将文件复制到 HDFS,然后将它们复制到 Mappers 和 Reducers,以便它们可以初始化您的 Python 外部进程。
如果您不使用 -files
指定您的 python 映射器或 reducer 代码,该作业将失败。
关于hadoop - 什么是 AWS EMR 的 -file 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26920025/