Hive小技巧及优化

总结一下平时遇到的SQL问题,以及对应的解决办法。

排除某几列查询

查询除了ds 和 hr 之外的所有列

1
SELECT `(ds|hr)?+.+` FROM sales

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Select#LanguageManualSelect-REGEXColumnSpecification

修改表生命周期(ODPS)

1
ALTER TABLE table_name SET lifecycle days;

正则匹配

匹配除“*n*”之外的任何单个字符。要匹配包括“*n*”在内的任何字符,请使用像“(.|\n)”的模式。

解析执行过程

explain  

效率优化

数据倾斜

count(distinct ) 效率低下,数据倾斜,改用 group by 优化

遇到的坑

查询空值

例 字段 A 有三种取值 Y, N, null(空值)
我想取Nnull ,如果查询条件为 <> ‘Y’ ,是查不出null
应该这么写 A <> ‘Y’ or A is null

其他

快速编辑

vscode中
选择多行
option + shift + 鼠标左键

编辑每行的末尾或者开头
使用正则表达式进行替换 开头 ^ ,末尾 $