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