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