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%

posted @ 2026-07-31 14:53  苏su  阅读(7)  评论(0)    收藏  举报