Hive Job层面的优化

1.  Run in Local Mode

数据处理比较小的时候就运行本地模式,

不需要分布式。

把阀值这三个设置改一下就是本地模式了。

2.  JVM Reuse

Hadoop每当得到一个map或者reduce任务的时候,

就会启动一个新的JVM。

处理job时间比较短,但是启动JVM太费时了。

配置成JVM Reuse可以大大优化

3. Parallel Exectution 并行执行

这个很常用的,默认是关闭的。

hive很多阶段是可以并行执行的,

并不是每个阶段都互相依赖,

如果集群中资源利用效率不高,可以考虑开启此选项。

4. 查询优化

(1)map side join 设置为enable

(2)bucket map side join 也设置为enable

以上两种都是基于bucket来优化,务必开启。

(3)skewjoin也可以开启为true

有数据倾斜时,就重新分配。

(4)CBO(一个很棒的执行优化器)

set hive.cbo.enable=true;  开启CBO

然后你可能就要收集状态,所以status也设置为true。(见下图)

这几个都要开启。

基于cost的优化

(5)vectorized

基于向量的优化,和基于cost的优化不冲突

一般这两个选项也是开启的,默认是开启的。

作用是hive做数据扫描的时候会按照1024rows来批量扫描,这样性能大大提高。

其他优化:

CTE:code尽量用CTE,这样好理解。

Common Table Expression

临时表可以共用,省去很多重复步骤。

windows functions比group by好多了,

这样你可以用简单的query实现复杂的功能。

总结:

了解了事务的概念

会使用增删改查,演示了一个merge的例子

了解了HPLSQL

了解了性能优化的一些技巧

从设计角度和从job角度

猜你喜欢

转载自blog.csdn.net/u011495642/article/details/84331589