我遗漏了一些关于 Yelp 的mrjob 工作库的明显内容。设置一个 MRJob 类几乎是非常简单的。在文件或标准输入上运行它也是如此。但是,如何将作业的输入从本地或 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_keys()方法,它让我得到了我需要的流,但我不确定从那里去哪里。