Hive性能优化——配置角度
我们可以从Hive的配置解读去优化。Hive系统内部已针对不同的查询预设定了优化方法,用户可以通过调整配置进行控制, 以下举例介绍部分优化的策略以及优化控制选项。 列裁剪 Hive在读取数据时,可以只读取查询所需要的列,而忽略其他的列。列如,若有以下查询:SELECT a,b FROM q WHERE e<10;在实施此查询时,q表有5列(a,b,c,d,e),Hive只读取查询逻辑中真实需要的3列a、b、e,而忽略c,d;这样做节省了读取开销,中间表存储开销和数据整合开销。裁剪所对应的参数项为: hive.optimize.cp=true (默认值为真) 分区裁剪 可以在查询过程中减少不必要的分区。列如,若有以下查询: SELECT FROM(SELECT a1,COUNT(1) FROM T GROUP BY a1) subq WHERE subq.prtn = 100 ;#(多余分区) SELECT FROM T1 JOIN (SELECT * FROM T2) subq ON (T1.a1=subq.a2) WHERE subq.prtn = 100 ;查询语句若将"subq.prtn=100"条件放入子查询中更为高效,可以减少读入的分区数目。Hive自动执行这种裁剪优化。分区参数为: hive.optimize.pruner=true (默认值为真)。 JOIN操作