delete hive_「挑战30万年薪」 Hive语句详解之从SQL到HQL的应转习惯
Hive不支持等值連接
SQL中對兩表內(nèi)聯(lián)可以寫成:
select * from dual a,dual b where a.key=b.key;
Hive中應(yīng)為:
select * from dual a join dual b on a.key=b.key;
而不是傳統(tǒng)的格式:
SELECT t1.al as c1,t2.b1 as c2FROM t1,t2 WHERE t1.a2=t2.b2
分號字符:
分號是SQL語句結(jié)束標記,在HiveQL中也是,但是在HiveQL中,對分號的識別沒有那么智慧,例如:
select concat(key,concat(";",key))from dual;
但HiveQL在解析語句時提示:
FAILED:Parse Error:line O:-1 mismatched input ''expecting )in function specification
解決的辦法:
使用分號的八進制的ASCII碼進行轉(zhuǎn)義,那么上述語句應(yīng)寫成:select concat(key,concat("073',key))from dual;
IS [INOT] NULL
SQL中null代表空值,值得警惕的是,在HiveQL中String類型的字段若是空(empty)字符串,即長度為0,那么對它進行IS NULL的判斷結(jié)果是False.
Hive不支持將數(shù)據(jù)插入現(xiàn)有的表或分區(qū)中,僅支持覆蓋重寫整個表,示例如下:
INSERT OVERWRITE TABLE t1 SELECT * FROM t2;
hive不支持INSERTINTO,UPDATE,DELETE操作
這樣的話,就不要很復(fù)雜的鎖機制來讀寫數(shù)據(jù)。
INSERT INTO syntax is only available starting in version 0.8。
解釋:
INSERT INTO就是在表或分區(qū)中追加數(shù)據(jù)。
hive支持嵌入mapreduce程序,來處理復(fù)雜的邏輯如:
FROM(
MAP doctext USING ‘python wc_mapper.py'AS(word,cnt)
FROM docs
CLUSTER BY word
)a
REDUCE word,cnt USING 'python wc_reduce.py';
解釋:
doctext:是輸入
word,cnt:是map程序的輸出
CLUSTER BY:將wordhash后,又作為reduce程序的輸入
map程序reduce程序可以單獨使用,如:
FROM(
FROM session_table
SELECT sessionid,tstamp,data
DISTRIBUTE BY sessionid SORT BY tstamp
)a
REDUCE sessionid,tstamp,data USING 'session_reducer.sh';
解釋:
DISTRIBUTE BV:用于給reduce程序分配行數(shù)據(jù)
hive支持將轉(zhuǎn)換后的數(shù)據(jù)直接寫入不同的表,還能寫入分區(qū)、hdfs和本地目錄。
這樣能免除多次掃描輸入表的消費。
如果覺得對你有所幫助。記得收藏和關(guān)注呦!(每日更新各種大數(shù)據(jù)框架)
如需轉(zhuǎn)載請注明出處(創(chuàng)作不易請見諒)
和巨嬰程序猿一起成長。讓自己變得更優(yōu)秀
想了解更多精彩內(nèi)容,快來關(guān)注跟著巨嬰去逆襲
我最近一直在思考(大數(shù)據(jù)通俗講解)的問題,你的看法是什么呢?關(guān)注我快說出來一起交流一下吧~
總結(jié)
以上是生活随笔為你收集整理的delete hive_「挑战30万年薪」 Hive语句详解之从SQL到HQL的应转习惯的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sam机架和kx连线图_「声卡跳线」雅马
- 下一篇: er图转化为关系模式题_“助你在家自学”