數(shù)據(jù)分析EPHS(10)-Hive中的explode使用全解

好了览闰,接下來咱們來看看如何在Hive中實現(xiàn)一行轉(zhuǎn)多行的操作,主要介紹explode和posexplode函數(shù)的使用问拘。

沿用上一節(jié)的數(shù)據(jù)遍略,從簡單到復(fù)雜,咱們一步步來骤坐。

1绪杏、數(shù)據(jù)介紹

先看下我們的數(shù)據(jù),主要包括三列纽绍,分別是班級蕾久、姓名以及成績,數(shù)據(jù)表名是default.classinfo拌夏。

2僧著、單列Explode

首先來看下最基本的,我們?nèi)绾伟裺tudent這一列中的數(shù)據(jù)由一行變成多行障簿。這里需要使用split和explode盹愚,并結(jié)合lateral view實現(xiàn)。代碼如下:

select
 class,student_name
from
default.classinfo
lateral view explode(split(student,',')) t as student_name

結(jié)果如下:

3站故、單列Posexplode

接下來皆怕,我們想要給每個同學(xué)來一個編號,假設(shè)編號就按姓名的順序世蔗,此時我們要用到另一個hive函數(shù)端逼,叫做posexplode,代碼如下:

select
 class,student_index + 1 as student_index,student_name
from
default.classinfo
lateral view posexplode(split(student,',')) t as student_index,student_name

這里select時對編號+1主要是因為編號是從0開始的污淋,結(jié)果如下:

4顶滩、多列Explode

好了,我們繼續(xù)前進寸爆。這次我們想基于兩列explode礁鲁,同時能夠使學(xué)生和其成績能夠匹配,即期望的效果如下:

顯然我們要對兩列進行explode赁豆,先試試行不行:

select
 class,student_name,student_score
from
default.classinfo
lateral view explode(split(student,',')) sn as student_name
lateral view explode(split(score,',')) sc as student_score

結(jié)果如下:

好像是不太行仅醇,如果我們分別對兩列進行explode的話,假設(shè)每列都有三個值魔种,那么最終會變成3 * 3 = 9行析二。但我們想要的結(jié)果只有三行。此時我們可以進行兩次posexplode,姓名和成績都保留對應(yīng)的序號叶摄,即使變成了9行属韧,我們通過where條件只保留序號相同的行即可。代碼如下:

select
 class,student_name,student_score
from
default.classinfo
lateral view posexplode(split(student,',')) sn as student_index_sn,student_name
lateral view posexplode(split(score,',')) sc as student_index_sc,student_score
where
 student_index_sn = student_index_sc

此時結(jié)果就對了:

好了蛤吓,到這里本應(yīng)該就結(jié)束了宵喂,假設(shè)我們又想對同學(xué)的成績進行一下排名該怎么做呢?當然是借助rank函數(shù)啦(row_number函數(shù)對于相同的成績也會賦予不同的排名会傲,所以我們選擇rank函數(shù)锅棕,關(guān)于二者的區(qū)別我們后續(xù)再細講):

select
 class,
 student_name,
 student_score,
 rank() over(partition by class order by student_score desc) as student_rank
from
default.classinfo
lateral view posexplode(split(student,',')) sn as student_index_sn,student_name
lateral view posexplode(split(score,',')) sc as student_index_sc,student_score
where
 student_index_sn = student_index_sc
order by class,student_rank

結(jié)果符合我們預(yù)期:

好了,本文就到這里了淌山!下期再見裸燎!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市艾岂,隨后出現(xiàn)的幾起案子顺少,更是在濱河造成了極大的恐慌,老刑警劉巖王浴,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脆炎,死亡現(xiàn)場離奇詭異,居然都是意外死亡氓辣,警方通過查閱死者的電腦和手機秒裕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钞啸,“玉大人几蜻,你說我怎么就攤上這事√逭叮” “怎么了梭稚?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長絮吵。 經(jīng)常有香客問我弧烤,道長,這世上最難降的妖魔是什么蹬敲? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任暇昂,我火速辦了婚禮,結(jié)果婚禮上伴嗡,老公的妹妹穿的比我還像新娘急波。我一直安慰自己,他們只是感情好瘪校,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布澄暮。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赏寇。 梳的紋絲不亂的頭發(fā)上吉嫩,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天,我揣著相機與錄音嗅定,去河邊找鬼。 笑死用踩,一個胖子當著我的面吹牛渠退,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播脐彩,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼碎乃,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了惠奸?” 一聲冷哼從身側(cè)響起梅誓,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎佛南,沒想到半個月后梗掰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡嗅回,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年及穗,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绵载。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡埂陆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出娃豹,到底是詐尸還是另有隱情焚虱,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布懂版,位于F島的核電站鹃栽,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏定续。R本人自食惡果不足惜谍咆,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望私股。 院中可真熱鬧摹察,春花似錦、人聲如沸倡鲸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至克滴,卻和暖如春逼争,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背劝赔。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工誓焦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人着帽。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓杂伟,卻偏偏與公主長得像,于是被迫代替她去往敵國和親仍翰。 傳聞我的和親對象是個殘疾皇子赫粥,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 分析函數(shù),也稱為窗口函數(shù)予借,通常被認為僅對數(shù)據(jù)倉庫SQL有用越平。使用分析函數(shù)的查詢,基于對數(shù)據(jù)行的分組來計算總量值灵迫。與...
    貓貓_tomluo閱讀 3,323評論 3 18
  • pyspark.sql module Module context Spark SQL和DataFrames中的重...
    盜夢者_56f2閱讀 5,428評論 0 19
  • 從今天開始秦叛,我要開始在簡書上好好寫文章了。 夜終于安靜下來龟再。 食品配送中心那鬧心的噪音終于停止了书闸。當然我明白凌晨六...
    白藜蘆醇閱讀 201評論 0 0
  • 前幾天看了一期羅胖的知識就是力量,如何重新獲得別人的信任利凑。我們?nèi)ワ埖瓿燥埥ⅲ缘揭话氚l(fā)現(xiàn)菜里有一只蟑螂,你把服務(wù)員叫...
    設(shè)計師周文斌閱讀 837評論 1 3
  • 明天是孩子在幼兒園的畢業(yè)典禮,每當想到要畢業(yè)割按,孩子就很難過膨报,萬分不舍,舍不得她的老師和同學(xué)們适荣,還有園長叔叔现柠。 春季...
    愛可可_15f2閱讀 365評論 0 3