【发布时间】:2018-08-25 16:29:09
【问题描述】:
由于Out of Memory Errors,我检查了一个总是发出喙的 spark 作业的输出 parquet 文件。
我在Cloudera 5.13.1上使用Spark 1.6.0
我注意到镶木地板行组大小不均匀。 第一行和最后一行是巨大的。剩下的真的很小……
parquet-tools RC = row count、TS = total size 的输出缩短:
row group 1: RC:5740100 TS:566954562 OFFSET:4
row group 2: RC:33769 TS:2904145 OFFSET:117971092
row group 3: RC:31822 TS:2772650 OFFSET:118905225
row group 4: RC:29854 TS:2704127 OFFSET:119793188
row group 5: RC:28050 TS:2356729 OFFSET:120660675
row group 6: RC:26507 TS:2111983 OFFSET:121406541
row group 7: RC:25143 TS:1967731 OFFSET:122069351
row group 8: RC:23876 TS:1991238 OFFSET:122682160
row group 9: RC:22584 TS:2069463 OFFSET:123303246
row group 10: RC:21225 TS:1955748 OFFSET:123960700
row group 11: RC:19960 TS:1931889 OFFSET:124575333
row group 12: RC:18806 TS:1725871 OFFSET:125132862
row group 13: RC:17719 TS:1653309 OFFSET:125668057
row group 14: RC:1617743 TS:157973949 OFFSET:134217728
这是一个已知的错误吗?如何在 Spark 中设置 parquet 块大小(行组大小)?
编辑:
Spark 应用程序所做的是:它读取一个大的 AVRO 文件,然后通过两个分区键(在选择中使用 distribute by <part_keys>)分配行,然后使用:DF.write.partitionBy(<part_keys>).parquet(<path>)
【问题讨论】:
-
我使用了 13 个 Executor。节点本地行是否有可能进入大行组,而来自每个执行程序的远程读取进入单独的行组?
-
您能否解决您的问题或找到解决方法?
-
不,我还没有找到解决方法
标签: hadoop apache-spark apache-spark-sql hadoop2 parquet