text TODO Hive优化SQL优化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了text TODO Hive优化SQL优化相关的知识,希望对你有一定的参考价值。

参考链接1: http://lxw1234.com/archives/2015/06/317.htm
参考链接2: https://zhuanlan.zhihu.com/p/25307921
参考链接3: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Joins#LanguageManualJoins-MapJoinRestrictions

1. JOIN操作将大表放后头(其他join例如left outer join因为链接顺序问题, 无法使用此优化)

Hive假定查询中最后的一个表是大表。它会将其它表缓存起来,然后扫描最后那个表。

因此通常需要将小表放前面,或者标记哪张表是大表:/*streamtable(table_name) */

2. JOIN时使用相同的连接键

当对3个或者更多个表进行join连接时,如果每个on子句都使用相同的连接键的话,那么只会产生一个MapReduce job。
否则有n个表就会产生n-1个mr job

四. transform+python

一种嵌入在hive取数流程中的自定义函数,通过transform语句可以把在hive中不方便实现的功能在python中实现,然后写入hive表中。

语法:

select transform({column names1})

using '**.py'

as {column names2}

from {table name}

如果除python脚本外还有其它依赖资源,可以使用ADD ARVHIVE

\!h 五. limit 语句快速出结果

一般情况下,Limit语句还是需要执行整个查询语句,然后再返回部分结果。

有一个配置属性可以开启,避免这种情况---对数据源进行抽样

hive.limit.optimize.enable=true --- 开启对数据源进行采样的功能

hive.limit.row.max.size --- 设置最小的采样容量

hive.limit.optimize.limit.file --- 设置最大的采样样本数

缺点:有可能部分数据永远不会被处理到

以上是关于text TODO Hive优化SQL优化的主要内容,如果未能解决你的问题,请参考以下文章

text Hive优化小文件合并

Hive SQL优化思路

Hive SQL优化思路

Hive SQL优化思路

hive sql 优化 - 2.0

Hive Sql/ Spark Sql 数据倾斜优化方案