我遗漏了一些关于Yelp的mrjob job库的明显信息。设置MRJob类几乎是非常简单的。在file或stdin上运行它也是如此。但是如何将作业的输入从本地或s3中的文件更改为s3存储桶中的键?在
像这样。假设我想计算S3存储桶中以字符串“foo”开头的所有对象:
import re
class MRCountS3Objects(MRJob):
define mapper(self, _, botoS3Key):
if re.match('^foo', botoS3Key.name):
yield 'foo', 1
define reduce(self, name, occurrences):
yield name, sum(occurrences)
这是一个非常做作的例子,但你可能明白我的意思。如何让MRJob在s3对象流上操作,而忽略对象的内容?我看到了S3Filesystem.get_s3_密钥()method,这正是我需要的流,但我不知道从那里到哪里去。在
至少有一种方法可以做到这一点。MRJob有一个可以分配给任何迭代器的
stdin
属性,然后可以编程方式运行该作业。例如,此代码应该处理my-bucket
的键名:相关问题 更多 >
编程相关推荐