当前位置:Gxlcms > 数据库问题 > HIVE SQL产生的文件数量及参数调优

HIVE SQL产生的文件数量及参数调优

时间:2021-07-01 10:21:17 帮助过:4人阅读

    在使用动态分区的时候,如果已知数据会分成n个分区,SQL运行的时候创建了m个Mapper,则这个SQL产生m * n个文件。如果这个数值大于设置的创建文件的总数(hive.exec.max.created.files),默认值100000个,就会出现异常。

    在未知动态分区数时,可以使用distribute by 分区字段,将分区字段内容相同的数据放到同一个reduce,当然也可以使用distribute by rand()将数据随记分配给reduce,这样可以使每个reduce处理的数据大体相同。

  • 和map一样,启动和初始化reduce会消耗时间和资源,有多少reduce就会产生多少个文件
  • 以下情况下,会只有一个reduce:
    • 没有group by的汇总,如把select dt,count(1) from test where dt = ‘2019-12-12‘ group by dt;,写成select count(1) from test where dt = ‘2019-12-12‘;
    • 用了order by;
    • 有笛卡尔积;

  控制Reduce的整体原则:

    使大数据量利用合适的reduce数;

    使单个reduce任务处理合适的数据量。

  

HIVE SQL产生的文件数量及参数调优

标签:原则   指定   表示   创建   where   min   hive   大于   总数   

人气教程排行