默认情况下,mrJob 以 key[tab] 输出格式存储输出中的键和值。
即使键(或值)为空、null 或不感兴趣也会发生这种情况。假设我的键值对是 None, {"a":1", "b":1}。然后我得到这个:
None {"a":1, "b":2}
有没有办法抑制键或值?我只想要这个:
{"a":1, "b":2}
顺便说一句,我已经尝试过了。我错过了什么……?
class MyMrJobClass(MRJob):
OUTPUT_PROTOCOL = mrjob.protocol.JSONProtocol
def step1_mapper(self, _, line):
...
yield my_key, my_value
def step1_reducer(self, key, values):
for v in values:
...
yield None, my_data
def steps(self):
return [
self.mr(
mapper=self.step1_mapper,
reducer=self.step1_reducer,
),
]
注意:我知道我不需要为单步作业覆盖步骤。这最终将是一个多步骤的工作,因此以这种方式构建类很重要。
谢谢!