我正在通过控制台启动EMR集群。
控制台在Arguments字段中自动添加了-files s3://jmilloy/milp_mapper.py
,这是我为映射器提供的位置。我无法在任何地方找到-file
选项。它有什么作用?为什么会自动添加?如果我将其删除会怎样?我可以从S3那里放入我脚本需要的其他文件吗?
答案 0 :(得分:3)
简答:
-files
不是EMR标志,而是将文件添加到Distributed Cache的方式。
长版:
Hadoop使用称为GenricOptionsParser的东西,用于解析命令行选项。当您使用python编写mapper或reducers时,这意味着Hadoop正在使用名为Streaming API的东西来运行该作业。因此,当您运行流式作业时,您必须使用-files
命令行选项传入Mapper和Reducers在文件系统中的路径(也可能是S3),一旦这样做,Hadoop将复制将文件复制到HDFS,然后将它们复制到Mappers和Reducers,以便初始化Python外部进程。
如果未使用-files
指定python mapper或reducer代码,则作业将失败。