Hive 中所有推荐的优化技术是什么?
What are all the recommended optimization techniques in Hive?
嗯,我在编写查询时知道一些优化技术,例如分区和分桶。 运行 TEZ模式下的蜂巢。但是,除此之外,hive 中还有其他优化技术。
有很多技巧:
- 使用 Tez
- 使用 ORCFile
- 使用向量化
- 基于成本的查询优化
- 写得恰当高效SQL
详情请参考以下hortonworks post:
http://hortonworks.com/blog/5-ways-make-hive-queries-run-faster/
您至少可以设置以下参数进行性能优化:-
set set hive.exec.reducers.max=no_of_reducers;
-- 并行处理的 reducer 数量。
set hive.exec.reducers.bytes.per.reducer=value_in_bytes;
-- 将处理负载平均分配给每个减速器。
set hive.auto.convert.join=true;
-- 在运行时自动将连接转换为 mapjoins 如果可能,
set hive.enforce.bucketing = true;
-- 如果 table 是 bucketed 你需要写这个参数,没有。桶的数量将等于没有。减速器。
嗯,我在编写查询时知道一些优化技术,例如分区和分桶。 运行 TEZ模式下的蜂巢。但是,除此之外,hive 中还有其他优化技术。
有很多技巧:
- 使用 Tez
- 使用 ORCFile
- 使用向量化
- 基于成本的查询优化
- 写得恰当高效SQL
详情请参考以下hortonworks post:
http://hortonworks.com/blog/5-ways-make-hive-queries-run-faster/
您至少可以设置以下参数进行性能优化:-
set set hive.exec.reducers.max=no_of_reducers;
-- 并行处理的 reducer 数量。
set hive.exec.reducers.bytes.per.reducer=value_in_bytes;
-- 将处理负载平均分配给每个减速器。
set hive.auto.convert.join=true;
-- 在运行时自动将连接转换为 mapjoins 如果可能,
set hive.enforce.bucketing = true;
-- 如果 table 是 bucketed 你需要写这个参数,没有。桶的数量将等于没有。减速器。