Spark Sql 小文件问题
参考:
https://github.com/Intel-bigdata/spark-adaptive
http://spark.apache.org/docs/latest/configuration.html
使用Spark Sql APIs 处理数据容易产生生成大量小文件,小文件问题也是在分布式计算中常见的问题。一般有三种方法来处理这类问题:
- 设置spark.sql.shuffle.partitions
- 采用coalesce(num)对数据集repartition
- 使用Spark Sql Adaptive Execution
- spark.sql.shuffle.partitions 参数通过在处理joins 或 aggregations 等shuffle操作来控制输出的分区数。
可以在spark-submit 提交任务时通过 --conf 来指定
- coalesce(num) 通过对数据集再分区控制输出分区数
- Spark Sql Adaptive Execution 是spark 2.3.0 版本后添加的
spark sql自适应框架可以通过设置spark shuffle partition的上限和下限对不同作业不同阶段的 reduce 个数进行动态调整;同时也可以通过参数对 joins 和 数据倾斜问题进行优化
Spark Sql Adaptive Execution参数:
控制并发度
Joins 优化策略:
数据倾斜: