我使用Spark 1.6.0编写一个宽表(400+列)作为镶木地板文件。 我的遗嘱执行人的资源限制在16Gb。
我使用distribute by <partition_cols>
阅读了表格,然后使用df.write.distributeBy(<partition_cols>).parquet(<path>)
这给了我每个分区一个镶木地板文件。这正是我想要的。
问题是,当分区大小太大时,执行程序会耗尽内存。我试图通过将parquet.block.size
从128Mb减少到64Mb来解决这个问题。这没有效果。当我检查输出镶木地板文件时,我看到行组大小只有大约2Mb。
对于另一个镶木地板文件,它是从具有相同配置的窄表创建的,行组大小为100Mb。
有人可以向我解释如何编写镶木地板文件,以及parquet.block.size
的效果吗?
谢谢!