spark sql工作笔记
1、同一个sql,hive引擎跑出来的和spark引擎跑出来的小文件个数不一致
Spark 小文件问题说明:Spark 的输出文件数等于最后一个 Stage 的 task 数,且不像 Hive 有作业结束后的自动合并兜底,因此高过滤、无 shuffle 直写等场景都会产生大量碎文件;现在集群虽已开启 AQE,但 AQE 只在 shuffle 场景生效,写表前没有 shuffle 就无法改造。
解决方案:
(1)在 SQL 最外层 SELECT 后加 /*+ REBALANCE */,写表前人为引入一次 shuffle,由 AQE 按实际数据量自动决定文件数,
(2)同时设置 spark.sql.adaptive.advisoryPartitionSizeInBytes=200m 控制单文件约 100MB。
(3)由于增加了shuffle耗时增加约 30%
作者:苏su
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

浙公网安备 33010602011771号