我正在使用 parquet-tools 合并 parquet 文件。但似乎 parquet-tools 需要与合并文件一样大的内存量。我们在 parquet-tools 中是否有其他方法或可配置选项来更有效地使用内存?因为我在 hadoop env 上将合并作业作为 map 作业运行。容器每次都会被杀死,因为它使用的内存比提供的多。
谢谢。
最佳答案
我不建议使用 parquet-tools merge,因为它只是一个接一个地放置行组,因此您仍然会有小的组,只是打包在一个文件中。生成的文件通常不会有明显更好的性能,在某些情况下,它的性能甚至可能比单独的文件更差。参见 PARQUET-1115了解详情。
目前合并 Parquet 文件的唯一正确方法是从中读取所有数据并将其写入新的 Parquet 文件。您可以使用 MapReduce 作业(需要为此编写自定义代码)或使用 Spark、Hive 或 Impala 来完成。
关于hadoop - 有效地合并大型 Parquet 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50299815/