选取出名字中包含下划线的名字,如name=AB_TEST;sql
select * from emp where name like '%_%'; -- 此方法的获得的结果是所有的名字,而不仅是咱们想要的AB_TEST, -- 由于在HQL模糊查询中,'%'表示任意一个或多个字符,'_'表示任意一个字符。 -- 因此'%_%'的写法并不能筛选出AB_TEST; 为了让'_'表示它自己,应该用转义字符; select * from emp where name like '%\\_%'; -- 第一个'\'表示的是它是一个转义字符的含义; 而第二'\'表示的是转义字符,此时'-' 表示的是它自己的含义;
order by后面能够接列的位置时,需设置参数:负载均衡
set hive.groupby.orderby.position.alias=true; true:可使用列的位置; false:不可使用列的位置;
在升序排序时,空值(Null)默认排在结果集最前面,在降序排序时,空值(Null)默认排在结果集最后面;ui
3.Hive Not in后接的子查询中不能有空值; spa
但在实际操做时发现,子查询中有空值并不会致使最终结果有影响;.net
4.Hive 启用客户端方式(具体操做还不清楚,待后续跟进);code
启动客户端方式的方法:hive --service hiveserver;server
5.和SQL同样,HiveQL中一样支持DISTINCT操做,以下示例:blog
此部分转至:http://blog.csdn.net/zj360202/article/details/38420575排序
(1) SELECT count(DISTINCT uid) FROM log (2) SELECT ip, count(DISTINCT uid) FROM log GROUP BY ip (3) SELECT ip, count(DISTINCT uid, uname) FROMlog GROUP BY ip (4) SELECT ip, count(DISTINCTuid), count(DISTINCT uname) FROMlog GROUP BY ip
当咱们使用Hive QL中的去重关键字DISTINCT时,须要注意的一点是:
在多个列上进行的去重操做与hive环境变量hive.groupby.skewindata存在关系。
当hive.groupby.skewindata=true时,hive不支持多列上的去重操做,并报错:ip
Error in semantic analysis: DISTINCT on different columns notsupported with skew in data.
注意:上面示例中的(3)不属于多列上的DISTINCT操做。
select mac,count(1) from log group by mac;
当某一个mac的值很是多,若是几个mac的hash是同样的,会分到一个reduce,且数量已经超过一个reduce的容量或是处理能力的时候,上面的语句改为 :
hive.groupby.skewindata=true; select mac,count(1) from log group by mac;
hive.groupby.skewindata变量
从上面groupby语句能够看出,这个变量是用于控制负载均衡的。当数据出现倾斜时,若是该变量设置为true,那么Hive会自动进行负载均衡。
HIVE-2416
Currently when multiple distinct function is used,Hive.groupby.skewindata optimization parameter shall be set false,or else an exception is raised:
Error in semantic analysis: DISTINCT on different columns not supported with skew in data
Skew groupby should support multiple distinct function.