W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Pig Latin的 TOP() 函數(shù)用于獲取包的頂部 N 個(gè)元組。對(duì)于這個(gè)函數(shù),作為輸入,我們必須傳遞一個(gè)關(guān)系,我們想要的元組的數(shù)量,以及其值被比較的列名。此函數(shù)將返回包含所需列的包。
下面給出了函數(shù) TOP() 的語法。
grunt> TOP(topN,column,relation)
假設(shè)在HDFS目錄 /pig_data/ 中有一個(gè)名為 employee_details.txt 的文件,其中包含以下內(nèi)容。
employee_details.txt
001,Robin,22,newyork 002,BOB,23,Kolkata 003,Maya,23,Tokyo 004,Sara,25,London 005,David,23,Bhuwaneshwar 006,Maggy,22,Chennai 007,Robert,22,newyork 008,Syam,23,Kolkata 009,Mary,25,Tokyo 010,Saran,25,London 011,Stacy,25,Bhuwaneshwar 012,Kelly,22,Chennai
通過使用關(guān)系 emp_data 將此文件加載到Pig中,如下所示。
grunt> emp_data = LOAD 'hdfs://localhost:9000/pig_data/ employee_details.txt' USING PigStorage(',') as (id:int, name:chararray, age:int, city:chararray);
按年齡對(duì)關(guān)系 emp_data 進(jìn)行分組,并將其存儲(chǔ)在關(guān)系 emp_group 中。
grunt> emp_group = Group emp_data BY age;
使用 Dump 運(yùn)算符驗(yàn)證關(guān)系 emp_group ,如下所示。
grunt> Dump emp_group; (22,{(12,Kelly,22,Chennai),(7,Robert,22,newyork),(6,Maggy,22,Chennai),(1,Robin, 22,newyork)}) (23,{(8,Syam,23,Kolkata),(5,David,23,Bhuwaneshwar),(3,Maya,23,Tokyo),(2,BOB,23, Kolkata)}) (25,{(11,Stacy,25,Bhuwaneshwar),(10,Saran,25,London),(9,Mary,25,Tokyo),(4,Sara, 25,London)})
現(xiàn)在,你可以按升序(基于id )排列每個(gè)組的前兩個(gè)記錄,如下所示。
grunt> data_top = FOREACH emp_group { top = TOP(2, 0, emp_data); GENERATE top; }
在這個(gè)例子中,我們正在檢索具有較大id的組的前2個(gè)元組。由于我們基于 id 檢索前2個(gè)元組,我們將列名id的索引作為TOP()函數(shù)的第二個(gè)參數(shù)傳遞。
使用 Dump 運(yùn)算符驗(yàn)證 data_top 關(guān)系的內(nèi)容,如下所示。
grunt> Dump data_top; ({(7,Robert,22,newyork),(12,Kelly,22,Chennai)}) ({(5,David,23,Bhuwaneshwar),(8,Syam,23,Kolkata)}) ({(10,Saran,25,London),(11,Stacy,25,Bhuwaneshwar)})
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: