问题描述
Hive ORC table常规小文件过多问题,于是用Spark写了一个Application来自动的Merge分区数据,思路很简单
大概就是
insert overwrite table partition (分区 XXX) select * from table where (分区 XXX)
当然已经把该dataframe repartition到想要的目标并发度,来控制最终分区下的文件个数
但是发现生成的文件个数虽然是对的,但是最后整个分区的Size竟然几乎翻倍。
排查过程以及结论
怀疑是Spark SQL没有压缩或者压缩格式不对
https://*.com/questions/48759909/how-to-check-if-zlib-compression-is-enabled-in-hive-tables
用这个链接的方式自查一下
发现 hive 生成的文件默认是zlib
而spark生成的文件默认是snappy
这个导致了最终文件大小相差较大