我使用spark 1.6.0编写一个宽表(400多列)作为Parquet文件。我的执行者的资源限制为16gb。
我用眼睛看table distribute by <partition_cols>
然后使用 df.write.distributeBy(<partition_cols>).parquet(<path>)
.
这给了我一个Parquet文件每个分区。那正是我想要的。
问题是,当分区太大时,执行器会耗尽内存。我试图通过降低成本来解决这个问题 parquet.block.size
从128mb到64mb。这没有效果。当我检查一个输出parquet文件时,我看到行组大小只有大约2mb。对于另一个parquet文件,它是从具有相同配置的窄表创建的,行组大小是100mb。
有人能给我解释一下Parquet文件是怎么写的,以及 parquet.block.size
?
谢谢!
暂无答案!
目前还没有任何答案,快来回答吧!