所以我只有一个镶木地板文件,我正在阅读Spark(使用SQL的东西),我希望它可以处理100个分区.我已经尝试设置spark.default.parallelism
为100,我们也尝试将拼花的压缩更改为无(来自gzip).无论我们做什么,火花作业的第一阶段只有一个分区(一旦发生洗牌,它就被重新划分为100,此后显然事情要快得多).
现在根据一些消息来源(如下),镶木地板应该是可拆分的(即使使用gzip!),所以我非常困惑,并且会喜欢一些建议.
https://www.safaribooksonline.com/library/view/hadoop-application-architectures/9781491910313/ch01.html
我正在使用spark 1.0.0,显然默认值spark.sql.shuffle.partitions
是200,所以不能这样.事实上,并行性的所有默认值都远远超过1,所以我不明白发生了什么.
您应该使用较小的块大小编写镶木地板文件.默认值为每块128Mb,但可以通过parquet.block.size
在writer中设置配置来配置.
如果你想深入细节,ParquetOuputFormat的来源就在这里.
块大小是你可以从一个逻辑上可读的镶木地板文件中读出的最小数据量(因为镶木地板是柱状的,你不能只是按行分割或像这样简单的东西),所以你不能有更多的阅读线程比输入块.