HiveSQL 與 SQL 的區(qū)別

Hive采用了類SQL的查詢語言HQL (hive query language)。除了HQL之外,無任何相似的地方脉执。
Hive是為了數(shù)據(jù)倉庫設(shè)計(jì)的。

  • 1戒劫、存儲(chǔ)位置: Hive在Hadoop上; Mysql 將數(shù)據(jù)存儲(chǔ)在設(shè)備或本地系統(tǒng)中;
  • 2半夷、數(shù)據(jù)更新: Hive不支持?jǐn)?shù)據(jù)的改寫和添加婆廊,是在加載的時(shí)候就已經(jīng)確定好了;數(shù)據(jù)庫可以CRUD;
  • 3、索引: Hive無索引玻熙,每次掃描所有數(shù)據(jù)否彩,底層是MR,并行計(jì)算, 適用于大數(shù)據(jù)量; MySQL有索引 , 適給在線查詢數(shù)據(jù);
  • 4嗦随、執(zhí)行: Hive底層是MarReduce ; MySQL底層是執(zhí)行引擎;
  • 5列荔、可擴(kuò)展性: Hive: 大數(shù)據(jù)量; MySQL: 相對(duì)就很少了。
  • 6枚尼、Hive不支持事務(wù)

1贴浙、hive不支持將數(shù)據(jù)插入現(xiàn)有的表或分區(qū),僅支持覆蓋重寫整張表

  • hive sql沒有update署恍、insert into類的更新表或插入表的操作
  • 關(guān)于這個(gè)很多人都寫了不支持崎溃,但是在Hive的之前版本已經(jīng)新增了這幾個(gè)命令,現(xiàn)在是可以使用的

2盯质、hive sql特殊字符拼接問題袁串,如分號(hào)要先進(jìn)行八進(jìn)制的ASCII碼轉(zhuǎn)義。

  • 不能智能識(shí)別concat(‘;’,key)呼巷,只會(huì)將 ‘ 囱修;’ 當(dāng)做SQL結(jié)束符號(hào)。
MySQL:
select concat(key,concat(';',key)) from dual;

hivesql:
select concat(key,concat('\073',key)) from dual;
將分號(hào)的用其八進(jìn)制的ASCII碼進(jìn)行轉(zhuǎn)義

3王悍、hive sql不支持非等值連接破镰,sql支持非等值連接
hive中把不相等的情況拿出來時(shí),無法直接寫字段A<>字段B压储,否則會(huì)報(bào)錯(cuò)鲜漩。

想從一個(gè)訂單表中,剔除測(cè)試用戶的訂單集惋,該如何實(shí)現(xiàn)呢孕似?使用left join

select a.uid,a.orderid
  from table1 a       --訂單表
  left join table2 b  --測(cè)試用戶id表
    on a.uid = b.uid 
 where b.uid is null

4、Hive中關(guān)于null 的存儲(chǔ)與SQL不同
在傳統(tǒng)數(shù)據(jù)庫中字段沒有值或者為空即表示為NULL刮刑,但是在hive中默認(rèn)的NULL值是\N鳞青。

在hive中會(huì)把文本的\N解析為NULL。在使用IS NULL 或者IS NOT NULL時(shí)會(huì)過濾數(shù)據(jù)为朋。

如果想延續(xù)傳統(tǒng)數(shù)據(jù)庫中對(duì)于空值為NULL臂拓,可以通過alter語句來修改hive表的信息,保證解析時(shí)是按照空值來解析NULL值习寸。語句如下:

alter table ljn005 
SETSERDEPROPERTIES('serialization.null.format' ='');

這樣就可以修改默認(rèn)的NULL值的定義了胶惰。比如這里定義

alter table ljn005
SETSERDEPROPERTIES('serialization.null.format' ='abc'); 

5、函數(shù)使用不同:

  • 如分隔字符串:
MySQL:
select substring_index("1,2,3",",",1);    # 返回結(jié)果:1    
select substring_index("1,2,3",",",3);    # 返回結(jié)果:1,2,3

Hivesql:
select split("1,2,3", ',')[0];    # 返回結(jié)果:1     
select split("1,2,3", ',')[2];    # 返回結(jié)果:3
  • 時(shí)間轉(zhuǎn)換函數(shù):
MySQL:
select p_id , from_unixtime(p_create_time/1000,'%y-%m-%d') as times 
from poi 
where p_parent_id= 4782760

hivesql:
select p_id , from_unixtime(p_create_time div 1000,'YYYY-MM-dd HH:mm:ss') as times 
from poi 
where p_parent_id= 4782760

6霞溪、hive支持將轉(zhuǎn)換后的數(shù)據(jù)直接寫入不同的表孵滞,還能寫入分區(qū)中捆、hdfs和本地目錄; SQL落地到文件

  • 這樣能免除多次掃描輸入表的開銷。

7坊饶、不支持 ‘< dt <’這種格式的范圍查找泄伪,可以用dt in(”,”)或者between替代。

8匿级、建表語句不一樣蟋滴,hive有列分割,按字段分割痘绎,sql沒有
hive中在創(chuàng)建表時(shí)津函,一般會(huì)根據(jù)導(dǎo)入的數(shù)據(jù)格式來指定字段分隔符和列分隔符。

一般導(dǎo)入的文本數(shù)據(jù)字段分隔符多為逗號(hào)分隔符或者制表符(但是實(shí)際開發(fā)中一般不用著這種容易在文本內(nèi)容中出現(xiàn)的的符號(hào)作為分隔符)孤页,當(dāng)然也有一些別的分隔符尔苦,也可以自定義分隔符。有時(shí)候也會(huì)使用hive默認(rèn)的分隔符來存儲(chǔ)數(shù)據(jù)行施。

分隔符詳解:https://blog.csdn.net/qq_26442553/article/details/80297028

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末允坚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蛾号,更是在濱河造成了極大的恐慌稠项,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件须教,死亡現(xiàn)場(chǎng)離奇詭異皿渗,居然都是意外死亡斩芭,警方通過查閱死者的電腦和手機(jī)轻腺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來划乖,“玉大人贬养,你說我怎么就攤上這事∏兮郑” “怎么了误算?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)迷殿。 經(jīng)常有香客問我儿礼,道長(zhǎng),這世上最難降的妖魔是什么庆寺? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任蚊夫,我火速辦了婚禮,結(jié)果婚禮上懦尝,老公的妹妹穿的比我還像新娘知纷。我一直安慰自己壤圃,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布琅轧。 她就那樣靜靜地躺著伍绳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪乍桂。 梳的紋絲不亂的頭發(fā)上冲杀,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音模蜡,去河邊找鬼漠趁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛忍疾,可吹牛的內(nèi)容都是我干的闯传。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼卤妒,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼甥绿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起则披,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤共缕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后士复,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體图谷,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年阱洪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了便贵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡冗荸,死狀恐怖承璃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蚌本,我是刑警寧澤盔粹,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站程癌,受9級(jí)特大地震影響舷嗡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嵌莉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一进萄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦垮斯、人聲如沸郎仆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扰肌。三九已至,卻和暖如春熊杨,著一層夾襖步出監(jiān)牢的瞬間曙旭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國打工晶府, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留桂躏,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓川陆,卻偏偏與公主長(zhǎng)得像剂习,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子较沪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345