選取出名字中包含下劃線的名字,如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.