获取只包含一个键的值的输出文件?

b91juud3  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(247)

我有一个hadoop的用例,我希望我的输出文件按键分割。目前,我让reducer简单地在迭代器中输出每个值。例如,下面是一些python流代码:

for line in sys.stdin:
    data = line.split("\t")
    print data[1]

这种方法适用于小型数据集(大约4gb)。作业的每个输出文件只包含一个键的值。
但是,如果我增加数据集的大小(超过40gb),那么每个文件都包含按排序顺序排列的混合键。
有没有更简单的方法来解决这个问题?我知道输出将按顺序排序,我可以简单地进行顺序扫描并添加到文件中。但这似乎不是必需的,因为hadoop会为您排序和拆分密钥。
这个问题可能不是最清楚的,所以我会澄清是否有人有任何意见。谢谢

6ju8rftf

6ju8rftf1#

好的,然后创建mapreduce解决方案的自定义jar实现,然后 MultipleTextOutputFormat 作为这里解释的输出格式。您只需将文件名(在本例中是key)作为reducer中的键,将整个有效负载作为值,您的数据就会写入名为key的文件中。

相关问题