嗨,我实际上正在使用Spark SQL hiveContext.sql()
,它使用按查询分组,并且遇到了OOM
问题。因此,考虑将spark.sql.shuffle.partitions
默认值从200增加到1000,但这无济于事。如果我错了,请更正我,此分区将共享数据洗牌负载,因此,更多的分区会保留较少的数据。请指导我是Spark的新手。我使用的是Spark 1.4.0,我有大约1TB的未压缩数据要使用hiveContext.sql()
分组查询进行处理。
如果随机播放的内存不足,请尝试设置spark.sql.shuffle.partitions
为2001。
当分区数大于2000时,Spark使用不同的数据结构进行随机记录簿记:
private[spark] object MapStatus {
def apply(loc: BlockManagerId, uncompressedSizes: Array[Long]): MapStatus = {
if (uncompressedSizes.length > 2000) {
HighlyCompressedMapStatus(loc, uncompressedSizes)
} else {
new CompressedMapStatus(loc, uncompressedSizes)
}
}
...
我真的希望他们能让您独立配置。
顺便说一下,我在Cloudera幻灯片中找到了此信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句