Apache Pig中g(shù)roup運(yùn)算符怎樣使用
Admin 2022-09-27 群英技術(shù)資訊 911 次瀏覽
在這篇文章中,我們來(lái)學(xué)習(xí)一下“Apache Pig中g(shù)roup運(yùn)算符怎樣使用”的相關(guān)知識(shí),下文有詳細(xì)的講解,易于大家學(xué)習(xí)和理解,有需要的朋友可以借鑒參考,下面就請(qǐng)大家跟著小編的思路一起來(lái)學(xué)習(xí)一下吧。GROUP 運(yùn)算符用于在一個(gè)或多個(gè)關(guān)系中對(duì)數(shù)據(jù)進(jìn)行分組,它收集具有相同key的數(shù)據(jù)。
下面給出了 group 運(yùn)算符的語(yǔ)法。
grunt> Group_data = GROUP Relation_name BY age;
假設(shè)在HDFS目錄 /pig_data/ 中有一個(gè)名為 student_details.txt 的文件,如下所示。
student_details.txt
001,Rajiv,Reddy,21,9848022337,Hyderabad 002,siddarth,Battacharya,22,9848022338,Kolkata 003,Rajesh,Khanna,22,9848022339,Delhi 004,Preethi,Agarwal,21,9848022330,Pune 005,Trupthi,Mohanthy,23,9848022336,Bhuwaneshwar 006,Archana,Mishra,23,9848022335,Chennai 007,Komal,Nayak,24,9848022334,trivendram 008,Bharathi,Nambiayar,24,9848022333,Chennai
將這個(gè)文件加載到Apache Pig中,關(guān)系名稱為student_details,如下所示。
grunt> student_details = LOAD 'hdfs://localhost:9000/pig_data/student_details.txt' USING PigStorage(',')
as (id:int, firstname:chararray, lastname:chararray, age:int, phone:chararray, city:chararray);
現(xiàn)在,讓我們按照年齡關(guān)系中的記錄/元組進(jìn)行分組,如下所示。
grunt> group_data = GROUP student_details by age;
使用 DUMP 運(yùn)算符驗(yàn)證關(guān)系 group_data ,如下所示。
grunt> Dump group_data;
將獲得顯示名為group_data關(guān)系的內(nèi)容的輸出,如下所示。在這里你可以觀察到結(jié)果模式有兩列:
一個(gè)是age,通過(guò)它我們將關(guān)系分組。
另一個(gè)是bag,其中包含一組元組,有各自年齡的學(xué)生記錄。
(21,{(4,Preethi,Agarwal,21,9848022330,Pune),(1,Rajiv,Reddy,21,9848022337,Hydera bad)})
(22,{(3,Rajesh,Khanna,22,9848022339,Delhi),(2,siddarth,Battacharya,22,984802233 8,Kolkata)})
(23,{(6,Archana,Mishra,23,9848022335,Chennai),(5,Trupthi,Mohanthy,23,9848022336 ,Bhuwaneshwar)})
(24,{(8,Bharathi,Nambiayar,24,9848022333,Chennai),(7,Komal,Nayak,24,9848022334, trivendram)})
在使用 describe 命令分組數(shù)據(jù)后,可以看到表的模式,如下所示。
grunt> Describe group_data;
group_data: {group: int,student_details: {(id: int,firstname: chararray,
lastname: chararray,age: int,phone: chararray,city: chararray)}}
以同樣的方式,可以使用illustrate命令獲取模式的示例說(shuō)明,如下所示。
$ Illustrate group_data;
它將產(chǎn)生以下輸出
-------------------------------------------------------------------------------------------------
|group_data| group:int | student_details:bag{:tuple(id:int,firstname:chararray,lastname:chararray,age:int,phone:chararray,city:chararray)}|
-------------------------------------------------------------------------------------------------
| | 21 | { 4, Preethi, Agarwal, 21, 9848022330, Pune), (1, Rajiv, Reddy, 21, 9848022337, Hyderabad)}|
| | 2 | {(2,siddarth,Battacharya,22,9848022338,Kolkata),(003,Rajesh,Khanna,22,9848022339,Delhi)}|
-------------------------------------------------------------------------------------------------
讓我們按年齡和城市對(duì)關(guān)系進(jìn)行分組,如下所示。
grunt> group_multiple = GROUP student_details by (age, city);
可以使用Dump運(yùn)算符驗(yàn)證名為 group_multiple 的關(guān)系的內(nèi)容,如下所示。
grunt> Dump group_multiple;
((21,Pune),{(4,Preethi,Agarwal,21,9848022330,Pune)})
((21,Hyderabad),{(1,Rajiv,Reddy,21,9848022337,Hyderabad)})
((22,Delhi),{(3,Rajesh,Khanna,22,9848022339,Delhi)})
((22,Kolkata),{(2,siddarth,Battacharya,22,9848022338,Kolkata)})
((23,Chennai),{(6,Archana,Mishra,23,9848022335,Chennai)})
((23,Bhuwaneshwar),{(5,Trupthi,Mohanthy,23,9848022336,Bhuwaneshwar)})
((24,Chennai),{(8,Bharathi,Nambiayar,24,9848022333,Chennai)})
(24,trivendram),{(7,Komal,Nayak,24,9848022334,trivendram)})
你可以按所有的列對(duì)關(guān)系進(jìn)行分組,如下所示。
grunt> group_all = GROUP student_details All;
現(xiàn)在,請(qǐng)驗(yàn)證關(guān)系 group_all 的內(nèi)容,如下所示。
grunt> Dump group_all;
(all,{(8,Bharathi,Nambiayar,24,9848022333,Chennai),(7,Komal,Nayak,24,9848022334 ,trivendram),
(6,Archana,Mishra,23,9848022335,Chennai),(5,Trupthi,Mohanthy,23,9848022336,Bhuw aneshwar),
(4,Preethi,Agarwal,21,9848022330,Pune),(3,Rajesh,Khanna,22,9848022339,Delhi),
(2,siddarth,Battacharya,22,9848022338,Kolkata),(1,Rajiv,Reddy,21,9848022337,Hyd erabad)})
到此,關(guān)于“Apache Pig中g(shù)roup運(yùn)算符怎樣使用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑,另外大家動(dòng)手實(shí)踐也很重要,對(duì)大家加深理解和學(xué)習(xí)很有幫助。如果想要學(xué)習(xí)更多的相關(guān)知識(shí),歡迎關(guān)注群英網(wǎng)絡(luò)資訊站,小編每天都會(huì)給大家分享實(shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:[email protected]進(jìn)行舉報(bào),并提供相關(guān)證據(jù),查實(shí)之后,將立刻刪除涉嫌侵權(quán)內(nèi)容。
猜你喜歡
我們?cè)贏pache Pig中有以下Math(數(shù)學(xué))函數(shù):S.N.函數(shù) &?描述1ABS(expression)獲取表達(dá)式的絕對(duì)值。2ACOS(expression)獲得表達(dá)式的反余弦值。3ASIN(expression)獲取表達(dá)式的反正弦值。
LIMIT 運(yùn)算符用于從關(guān)系中獲取有限數(shù)量的元組。語(yǔ)法下面給出了 LIMIT 運(yùn)算符的語(yǔ)法。grunt> Result = LIMIT Relation_name required number of tuples;
JOIN 運(yùn)算符用于組合來(lái)自兩個(gè)或多個(gè)關(guān)系的記錄。在執(zhí)行連接操作時(shí),我們從每個(gè)關(guān)系中聲明一個(gè)(或一組)元組作為key。 當(dāng)這些key匹配時(shí),兩個(gè)特定的元組匹配,否則記錄將被丟棄。
FOREACH 運(yùn)算符用于基于列數(shù)據(jù)生成指定的數(shù)據(jù)轉(zhuǎn)換。語(yǔ)法下面給出了 FOREACH 運(yùn)算符的語(yǔ)法。grunt> Relation_name2 = FOREACH Relatin_name1 GENERATE (required data);
Hadoop可運(yùn)行于一般的商用服務(wù)器上,具有高容錯(cuò)、高可靠性、高擴(kuò)展性等特點(diǎn)特別適合寫一次,讀多次的場(chǎng)景適合大規(guī)模數(shù)據(jù)、流式數(shù)據(jù)(寫一次,讀多次)、商用硬件(一般硬件);
推薦內(nèi)容
成為群英會(huì)員,開(kāi)啟智能安全云計(jì)算之旅
立即注冊(cè)關(guān)注或聯(lián)系群英網(wǎng)絡(luò)
7x24小時(shí)售前:400-678-4567
7x24小時(shí)售后:0668-2555666
24小時(shí)QQ客服
群英微信公眾號(hào)
CNNIC域名投訴舉報(bào)處理平臺(tái)
服務(wù)電話:010-58813000
服務(wù)郵箱:[email protected]
投訴與建議:0668-2555555
Copyright ? QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版權(quán)所有
增值電信經(jīng)營(yíng)許可證 : B1.B2-20140078 ICP核準(zhǔn)(ICP備案)粵ICP備09006778號(hào) 域名注冊(cè)商資質(zhì) 粵 D3.1-20240008