Hive?HQL支持2種查詢語句風(fēng)格
背景
在平時業(yè)務(wù)運營分析中經(jīng)常會提取數(shù)據(jù),也就是大家俗稱的Sql Boy,表哥表姐,各大公司數(shù)據(jù)中臺現(xiàn)在大部分用的都是基于Hadoop的分布式系統(tǒng)基礎(chǔ)架構(gòu),用的比較多的有Hive數(shù)據(jù)倉庫工具,數(shù)據(jù)分析師在數(shù)據(jù)查詢時用的就是HQL,語法與Mysql有所不同,基本每天都會寫大量的HQL語句,但你有試過哪些風(fēng)格的寫法呢?哪種風(fēng)格的查詢語句更容易理解呢?可能不同的人有不同的看法,下面展示具體的風(fēng)格代碼樣式,看看你喜歡哪種
- Hadoop是一個由Apache基金會所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)。用戶可以在不了解分布式底層細(xì)節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力進(jìn)行高速運算和存儲。Hadoop實現(xiàn)了一個分布式文件系統(tǒng)( Distributed File System),其中一個組件是HDFS(Hadoop Distributed File System)
- hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,用來進(jìn)行數(shù)據(jù)提取、轉(zhuǎn)化、加載,這是一種可以存儲、查詢和分析存儲在Hadoop中的大規(guī)模數(shù)據(jù)的機(jī)制。hive數(shù)據(jù)倉庫工具能將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供SQL查詢功能,能將SQL語句轉(zhuǎn)變成MapReduce任務(wù)來執(zhí)行。
風(fēng)格一
這種風(fēng)格大家都比較常用,從結(jié)果向源頭倒著推,直接多層嵌套,一層一層往里面寫,業(yè)務(wù)邏輯復(fù)雜的話有可能寫很多層,達(dá)到幾百行之多,目前很多公司在有數(shù)倉的支持下,基本嵌套的層數(shù)會比較少
select * from ( (select * from a_temp where xxxx group by xxxx) as a left join (select * from b_temp where xxxx) as b on a.id=b.id ) temp where xxxx group by xxxx order by xxxx
風(fēng)格二
with a as(select * from a_temp where xxxx group by xxxx), b as(select * from b_temp where xxxx) select * from a left join b on a.id=b.id where xxxx group by xxxx order by xxxx
這種風(fēng)格是利用 with
語句,從源頭向結(jié)果正向推,可以把 with
語句理解為建立了一個臨時視圖/表一樣,后面的表引用前面的表,邏輯是正向推進(jìn)
兩種風(fēng)格的區(qū)別
- 風(fēng)格一:用的最多,從結(jié)果向源頭倒著推
- 風(fēng)格二:容易理解,從源頭向結(jié)果正向推
相關(guān)參考
Python 利用Pandas把數(shù)據(jù)直接導(dǎo)入Mysql
Python 基于ssh連接遠(yuǎn)程Mysql數(shù)據(jù)庫
以上就是Hive HQL支持2種查詢語句風(fēng)格的詳細(xì)內(nèi)容,更多關(guān)于Hive HQL查詢語句風(fēng)格的資料請關(guān)注本站其它相關(guān)文章!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。