-
Notifications
You must be signed in to change notification settings - Fork 4
Spark SQL数据倾斜解决方案
刘军强 edited this page Oct 24, 2018
·
1 revision
- 聚合源数据:Spark Core和Spark SQL没有任何的区别
- 过滤导致倾斜的key:在sql中用where条件
- 提高shuffle并行度:groupByKey(1000),spark.sql.shuffle.partitions(默认是200)
- 双重group by:改写SQL,两次group by
- reduce join转换为map join:spark.sql.autoBroadcastJoinThreshold(默认是10485760 ) 你可以自己将表做成RDD,自己手动去实现map join Spark SQL内置的map join,默认是如果有一个小表,是在10M以内,默认就会将该表进行broadcast,然后执行map join;调节这个阈值,比如调节到 20M、50M、甚至1G。20 971 520
- 采样倾斜key并单独进行join:纯Spark Core的一种方式,sample、filter等算子。
- 随机key与扩容表:Spark SQL+Spark Core