【发布时间】:2023-04-10 17:43:02
【问题描述】:
现在我们正在使用 mapreduce 作业来转换数据并将结果以 Parquet 格式存储。
还会生成一个摘要文件 (_metadata)。但问题是它太大(超过5G)。有什么办法可以缩小尺寸吗?
【问题讨论】:
标签: parquet
现在我们正在使用 mapreduce 作业来转换数据并将结果以 Parquet 格式存储。
还会生成一个摘要文件 (_metadata)。但问题是它太大(超过5G)。有什么办法可以缩小尺寸吗?
【问题讨论】:
标签: parquet
感谢 Alex Levenson 和 Ryan Blue:
亚历克斯·莱文森:
您可以将摘要文件的读取推送到映射器,而不是在提交者节点上读取:
ParquetInputFormat.setTaskSideMetaData(conf, true);
(Ryan Blue:这是从 1.6.0 开始的默认设置)
或在您的配置中将“parquet.task.side.metadata”设置为 true。我们 有类似的问题,默认情况下,客户端读取摘要文件 需要大量时间和内存的提交者节点。这个标志修复了 而是通过从 映射器中的文件页脚(每个映射器只读取它需要的元数据)。
我们过去一直在谈论的另一种选择是 完全禁用创建此元数据文件,正如我们所看到的创建它 也可能很昂贵,如果您使用任务端元数据方法,它是 没用过。
(Ryan Blue:有一个选项可以抑制文件,我建议这样做。现在文件元数据已在任务中处理,不再需要摘要文件。)
【讨论】: