Poison

关于 Spark 的分区数问题

Coalesce Hints for SQL Queries,该特性用于控制输出的文件数,之前数仓同步时耗时较长,经过定位后发现大部分时间消耗在与 OSS 的数据交互上,主要是小文件引起,每张表的同步任务经过 shuffle 后默认会生成 200 个文件,后面优化为根据每张表的表记录数计算出一个合适的分区数使用上述 Hint 嵌入在 SQL 中,整个数仓同步耗时降低近 50%。

同时发现的问题还有 EMR-OSS 连接器中对 System.gc() 的显式调用,该 问题 会导致花费大量时间在不必要的 FullGC 上,后面移除了该调用以提升数仓同步速度。

Reference

Spark Partitioning & Partition Understanding
Spark SQL Shuffle Partitions