Hive on Spark 如何进行小文件merge

Hive中有相关的属性property可以进行设置,对执行结果进行小文件merge;当使用Spark作为Hive的执行引擎时,遇到小文件合并需求时,也可以进行处理:

  1. 配置属性 hive.merge.sparkfiles=true
    https://issues.apache.org/jira/browse/HIVE-8043
    https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark%3A+Getting+Started
    ps: 奈何公司的Spark版本不支持,命令行设置&hive-site.xml设置均无效

  2. 使用distribute by命令进行数据重分布
    使用时间戳取模进行数据分布
    http://stackoverflow.com/questions/31009834/merge-multiple-small-files-in-to-few-larger-files-in-spark
    Demo:

    1
    select * from table1 where yymmdd='20160816' distribute by (column % 64)