我正在使用txt作为输入编写Hadoop seq文件。 我知道如何从文本文件中编写序列文件。
但我想将输出序列文件限制为某个特定大小,例如256MB。
是否有任何内置方法可以做到这一点?
答案 0 :(得分:1)
AFIAK你需要编写自己的自定义输出格式来限制输出文件大小 - 默认情况下,FileOutputFormats为每个reducer创建一个输出文件。
另一种选择是正常创建序列文件,然后创建第二个作业(仅映射),使用标识映射器,然后修改最小/最大输入分割大小,以确保每个映射器每个仅处理¬256MB。这意味着输入文件og 1GB将由4个映射器处理并创建¬256MB的输出文件。您将获得较小的文件,其中输入文件为300MB(256MB映射器和44MB映射器将运行)。
您正在寻找的属性是:
mapred.min.split.size
mapred.max.split.size
它们都配置为字节大小,因此将它们都设置为268435456