18分組和連接Join運算符(上)_第1頁
18分組和連接Join運算符(上)_第2頁
18分組和連接Join運算符(上)_第3頁
18分組和連接Join運算符(上)_第4頁
18分組和連接Join運算符(上)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

分組和連接Join運算符(上)2學(xué)習(xí)任務(wù)ApachePigJoin運算符JOIN運算符用于組合來自兩個或多個關(guān)系的記錄。在執(zhí)行連接操作時,我們從每個關(guān)系中聲明一個(或一組)元組作為key。當(dāng)這些key匹配時,兩個特定的元組匹配,否則記錄將被丟棄。連接可以是以下類型:Self-joinInner-joinOuter-join?leftjoin,rightjoin,andfulljoin3ApachePigJoin運算符假設(shè)在HDFS的/pig_data/目錄中有兩個文件,即customers.txt和orders.txt,如下所示。1,Ramesh,32,Ahmedabad,2000.002,Khilan,25,Delhi,1500.003,kaushik,23,Kota,2000.004,Chaitali,25,Mumbai,6500.005,Hardik,27,Bhopal,8500.006,Komal,22,MP,4500.007,Muffy,24,Indore,10000.00102,2009-10-0800:00:00,3,3000100,2009-10-0800:00:00,3,1500101,2009-11-2000:00:00,2,1560103,2008-05-2000:00:00,4,2060customers.txtorders.txt4ApachePigJoin運算符我們將這兩個文件與customers和orders關(guān)系一起加載到Pig中,如下所示grunt>customers=LOAD'hdfs://localhost:9000/pig_data/customers.txt'USINGPigStorage(',')as(id:int,name:chararray,age:int,address:chararray,salary:int);

grunt>orders=LOAD'hdfs://localhost:9000/pig_data/orders.txt'USINGPigStorage(',')as(oid:int,date:chararray,customer_id:int,amount:int);現(xiàn)在讓我們對這兩個關(guān)系執(zhí)行各種連接操作Self-join(自連接)Inner-join(內(nèi)部連接)Outer-join(外連接)leftjoin,rightjoin,andfulljoin5Self-join(自連接)Self-join用于將表與其自身連接,就像表是兩個關(guān)系一樣,臨時重命名至少一個關(guān)系。通常,在ApachePig中,為了執(zhí)行self-join,我們將在不同的別名(名稱)下多次加載相同的數(shù)據(jù)。那么,將文件customers.txt的內(nèi)容加載為兩個表,如下所示。grunt>customers1=LOAD'hdfs://localhost:9000/pig_data/customers.txt'USINGPigStorage(',')as(id:int,name:chararray,age:int,address:chararray,salary:int);

grunt>customers2=LOAD'hdfs://localhost:9000/pig_data/customers.txt'USINGPigStorage(',')as(id:int,name:chararray,age:int,address:chararray,salary:int);語法grunt>Relation3_name=JOINRelation1_nameBYkey,Relation2_nameBYkey;6Self-join(自連接)驗證

使用DUMP運算符驗證關(guān)系customers3grunt>Dumpcustomers3;將產(chǎn)生以下輸出,顯示關(guān)系customers的內(nèi)容7InnerJoin(內(nèi)部連接)InnerJoin使用較為頻繁;它也被稱為等值連接。當(dāng)兩個表中都存在匹配時,內(nèi)部連接將返回行?;谶B接謂詞(join-predicate),通過組合兩個關(guān)系(例如A和B)的列值來創(chuàng)建新關(guān)系。查詢將A的每一行與B的每一行進行比較,以查找滿足連接謂詞的所有行對。當(dāng)連接謂詞被滿足時,A和B的每個匹配的行對的列值被組合成結(jié)果行。語法grunt>result=JOINrelation1BYcolumnname,relation2BYcolumnname;讓我們對customers和orders執(zhí)行innerjoin操作grunt>coustomer_orders=JOINcustomersBYid,ordersBYcustomer_id;8InnerJoin(內(nèi)部連接)驗證

使用DUMP運算符驗證coustomer_orders關(guān)系grunt>Dumpcoustomer_orders;將獲得以下輸出,是名為coustomer_orders的關(guān)系的內(nèi)容9OuterJoin(外連接)OuterJoin:與innerjoin不同,outerjoin返回至少一個關(guān)系中的所有行。outerjoin操作以三種方式執(zhí)行:LeftouterjoinRightouterjoinFullouterjoin10LeftOuterJoin(左外連接)leftouterjoin操作返回左表中的所有行,即使右邊的關(guān)系中沒有匹配項。語法grunt>Relation3_name=JOINRelation1_nameBYidLEFTOUTER,Relation2_nameBYcustomer_id;讓我們對customers和orders的兩個關(guān)系執(zhí)行l(wèi)eftouterjoin操作grunt>outer_left=JOINcustomersBYidLEFTOUTER,ordersBYcustomer_id;11LeftOuterJoin(左外連接)驗證輸出

使用DUMP運算符驗證關(guān)系outer_leftgrunt>Dumpouter_left;它將產(chǎn)生以下輸出,顯示關(guān)系outer_left的內(nèi)容12RightOuterJoin(右外連接)rightouterjoin操作將返回右表中的所有行,即使左表中沒有匹配項。語法grunt>outer_right=JOINcustomersBYidRIGHT,ordersBYcustomer_id;讓我們對customers和orders執(zhí)行rightouterjoin操作grunt>outer_right=JOINcustomersBYidRIGHT,ordersBYcustomer_id;13RightOuterJoin(右外連接)驗證輸出

使用DUMP運算符驗證關(guān)系outer_rightgrunt>Dumpouter_left;它將產(chǎn)生以下輸出,顯示關(guān)系outer_right的內(nèi)容14FullOuterJoin(全外連接)當(dāng)一個關(guān)系中存在匹配時,fullouterjoin操作將返回行。語法grunt>outer_full=JOINcustomersBYidFULLOUTER,ordersBYcustomer_id;讓我們對customers和orders執(zhí)行fullouterjoin操作grunt>outer_full=JOINcustomersBYidFULLOUTER,ordersBYcustomer_id;15FullOuterJoin(全外連接)驗證輸出

使用DUMP運算符驗證關(guān)系outer_fullgrun>Dumpouter_f

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論