当我运行我的MRJob脚本并使用CLI为工作启动EMR集群时,我试图弄清楚如何将数据从S3加载到集群中的HDFS上。我想做这个作为安装过程的一部分。在运行MRJob中的步骤之前,将S3数据加载到HDFS的特定语法示例是什么?
我已经搜索了很多地方,以便深入了解与MRJob一起使用的正确语法,以便将我的S3数据预加载到HDFS中。我仍然在加快术语和流程的速度。
MRJob提到JarStep和Hadoop流在其文档:https://pythonhosted.org/mrjob/guides/writing-mrjobs.html
Yelp的对这个讨论线程:https://github.com/Yelp/mrjob/pull/665
AWS有一个工具S3DistCp为负载提供语法和例子出现相关的Java 。 (我不能发布超过2个链接,但谷歌搜索将提供更多信息)
我的方法是在MRJob脚本的MRS步骤方法中将JarStep作为步骤之前的步骤。我试图传递S3DistCp命令作为参数。
def steps(self):
return [JarStep(name='jar-step', jar='s3://<bucket to jar file>',
args=['--src,s3://<bucket to data>, --dest,hdfs:///<bucket>']),
MRStep(...)
]
我已经尝试了一些变化,有和无引号或引号分开输入和输出或逗号之间的空格。主要是我得到的错误是“异常在线程'main'java.lang.RuntimeException:参数 - src ,, --desc ,,不匹配。
我发现的例子与以下内容类似:如果JarStep.INPUT应及时更换或其它地方定义我开始想,我应该通过下--jobconf的CLI java的命令,所以它对齐到S3DistCp文档
args=['naive-bayes', JarStep.INPUT, JarStep.OUTPUT]
它不清楚。
任何想法或只是简单的例子,请发送我的方式
感谢您对Sandesh的快速响应。我试图用我用来启动EMR实例的命令或在MRJob脚本中包含该命令。据我所知,你列出的两个选项需要EMR已经运行。您是否知道MRJob脚本中会有一个示例,作为MRJob bash命令的一部分来启动作业或在conf文件中? – nyghtowl
我希望有人给你答案,我有同样的问题 –