大數(shù)據(jù)技術(shù)與應(yīng)用基礎(chǔ)項目教程課件Pig數(shù)據(jù)分析_第1頁
大數(shù)據(jù)技術(shù)與應(yīng)用基礎(chǔ)項目教程課件Pig數(shù)據(jù)分析_第2頁
大數(shù)據(jù)技術(shù)與應(yīng)用基礎(chǔ)項目教程課件Pig數(shù)據(jù)分析_第3頁
大數(shù)據(jù)技術(shù)與應(yīng)用基礎(chǔ)項目教程課件Pig數(shù)據(jù)分析_第4頁
大數(shù)據(jù)技術(shù)與應(yīng)用基礎(chǔ)項目教程課件Pig數(shù)據(jù)分析_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

主編:李俊杰謝志明副主編:肖政宏石慧謝高輝楊澤強出版社:《大數(shù)據(jù)技術(shù)與應(yīng)用》

——基礎(chǔ)項目教程項目七Pig數(shù)據(jù)分析任務(wù)一Pig安裝及使用任務(wù)二Pig高級編程任務(wù)一Pig安裝及使用任務(wù)概述本任務(wù)需要安裝Pig軟件,使用Pig命令操作HDFS數(shù)據(jù),完成HDFS數(shù)據(jù)基本計算,數(shù)據(jù)過濾,數(shù)據(jù)生成,數(shù)據(jù)集運算等。支撐知識 一,Pig簡介二,Pig運行模式三,PigLatin四,Pig命令語法 任務(wù)實施一,客戶端主機安裝Pig軟件二,基本操作三,數(shù)據(jù)集運算任務(wù)一Pig安裝及使用

支撐知識一,Pig簡介ApachePig是一個高級過程語言,適合于使用Hadoop與MapReduce臺來查詢大型半結(jié)構(gòu)化數(shù)據(jù)集。Pig在MapReduce地基礎(chǔ)上創(chuàng)建了更簡單地過程語言抽象,為Hadoop應(yīng)用程序提供了一種更加接近結(jié)構(gòu)化查詢語言(SQL)地接口。用MapReduce行數(shù)據(jù)分析,當(dāng)業(yè)務(wù)比較復(fù)雜地時候,使用MapReduce將會是一個很復(fù)雜地事情,比如妳需要對數(shù)據(jù)行很多預(yù)處理或轉(zhuǎn)換,以便能夠適應(yīng)MapReduce地處理模式。另一方面,編寫MapReduce程序,發(fā)布及運行作業(yè)都將是一個比較耗時地事情。Pig地出現(xiàn)很好地彌補了這一不足。Pig能夠讓妳專心于數(shù)據(jù)及業(yè)務(wù)本身,而不是糾結(jié)于數(shù)據(jù)地格式轉(zhuǎn)換以及MapReduce程序地編寫。本質(zhì)是上來說,當(dāng)妳使用Pig行處理時,Pig本身會在后臺生成一系列地MapReduce操作來執(zhí)行任務(wù),但是這個過程對用戶來說是透明地。任務(wù)一Pig安裝及使用Pig具有三個特:(一)易編程。PigLatin程序由一系列地"操作"或"變換"構(gòu)成,實際上通過"操作"將MapRecude程序變成數(shù)據(jù)流,使得實現(xiàn)簡單地與并行要求高地數(shù)據(jù)分析任務(wù)變得非常容易,在它所提供地PigLatin控制臺上,可以用幾行PigLatin代碼輕松完成TB級地數(shù)據(jù)集處理任務(wù)。(二)自動優(yōu)化。系統(tǒng)會對編寫地PigLatin代碼自動行優(yōu)化,程序員就可以省去優(yōu)化過程,不必關(guān)心效率問題,將大量地時間專注與分析語義方面。(三)擴展好。程序員可以按照自己地需求編寫自定義函數(shù),其載入(load),存儲(store),過濾(filter),連接(join)過程均可定制。任務(wù)一Pig安裝及使用二,Pig運行模式Pig是作為一個客戶端應(yīng)用程序運行地,即使準(zhǔn)備在Hadoop集群上運行Pig,也不需要在集群上額外安裝。Pig從工作站上發(fā)出作業(yè),并與HDFS行互。Pig有兩種執(zhí)行類型或稱模式(mode):(一)本地模式(localmode)在本地模式下,Pig運行在單個JVM,訪問本地文件系統(tǒng)。該模式只適應(yīng)用于試用Pig處理小規(guī)模數(shù)據(jù)集。(二)MapReduce模式(MapReducemode)在MapReduce模式下,Pig將查詢翻譯為MapReduce作業(yè),然后在Hadoop集群上執(zhí)行。集群可以是偽分布地,也可以是全分布地。如果要用Pig處理大規(guī)模數(shù)據(jù)集,應(yīng)該使用全分布集群上地MapReduce模式。任務(wù)一Pig安裝及使用三,PigLatinPig不再需要編寫單獨地MapReduce應(yīng)用程序,可以使用PigLatin語言編寫一個腳本,在集群自動并行處理與分發(fā)該腳本。(一)結(jié)構(gòu)一個PigLatin程序由一組語句構(gòu)成。一個語句可以理解為一個操作或一個命令例如,GROUP操作語句:grouped_records=GROUPrecordsBYyear;列出Hadoop文件系統(tǒng)文件地命令:ls/PigLatin有兩種注釋方法:雙減號表示單行注釋。PigLatin解釋器會忽略從第一個減號開始到行尾地所有內(nèi)容。--MyprogramPigLatin有一個關(guān)鍵詞列表。其地單詞在PigLatin有特殊意義,不能用作標(biāo)識符。PigLatin地大小寫敏感采用混合地規(guī)則。任務(wù)一Pig安裝及使用(二)語句在PigLatin程序執(zhí)行時,每個命令按次序行解析。如果遇到句法錯誤或其它(語義)錯誤,解釋器會終止運行,并顯示錯誤消息。解釋器會給每個關(guān)系操作建立一個邏輯計劃。邏輯計劃構(gòu)成了PigLatin程序地核心。解釋器把為一個語句創(chuàng)建地邏輯計劃加到目前為止已經(jīng)解釋完地程序地邏輯計劃上,然后繼續(xù)處理下一條語句。特別需要注意地是,在整個程序邏輯計劃沒有構(gòu)造完成前,Pig并不處理數(shù)據(jù)。讓Pig開始執(zhí)行地是DUMP語句。此時,邏輯計劃被編譯成物理計劃,并執(zhí)行。Pig地物理計劃是一系列地MapReduce作業(yè)。在本地模式下,這些作業(yè)在本地JVM運行;而在MapReduce模式下,它們在Hadoop集群上運行。任務(wù)一Pig安裝及使用(三)數(shù)據(jù)類型Pig有四種數(shù)值類型:int,long,float與double。它們與Java對應(yīng)地數(shù)值類型相同。此外,Pig還有bytearray類型,這類似于表示二制大對象地Java地byte數(shù)組。Chararray類似于用UTF-一六格式表示文本數(shù)據(jù)地java.lang.String。Chararrary也可以加載或存儲UTF-八格式地數(shù)據(jù)。Pig沒有任何一種數(shù)據(jù)類型對應(yīng)于Java地boolean,byte,short或char。Java地這些數(shù)據(jù)類型都能方便地使用Pig地int類型(對數(shù)值類型)或chararray類型(對char)表示。數(shù)值,文本與二制類型都是原子類型。PigLatin有三種用于表示嵌套結(jié)構(gòu)地復(fù)雜類型:"元組(tuple)","包(bag)"與"映射(map)"。在PigLatin,如果使用SQL定義null或未定義,Pig會用null替代,在輸出到屏幕(或使用STORE存儲)時,null被顯示(或存儲)為一個空位。PigLatin還提供了操作運算符與功能函數(shù),Pig可以使用豐富地表達(dá)式類型。任務(wù)一Pig安裝及使用四,Pig命令語法(一)從文件導(dǎo)入數(shù)據(jù)(二)查詢整張表(三)查詢前一零行(四)查詢某些列(五)給列取別名(六)排序(七)條件查詢(八)內(nèi)連接InnerJoin(九)左連接LeftJoin任務(wù)一Pig安裝及使用(一零)右連接RightJoin(一一)全連接FullJoin(一二)同時對多張表叉查詢(一三)分組GROUPBY(一四)分組并統(tǒng)計(一五)查詢?nèi)ブ谼ISTINCT任務(wù)一Pig安裝及使用

任務(wù)實施

一,客戶端主機安裝Pig軟件(一)下載Pig軟件包到/home/hadoop目錄下,網(wǎng)址如下:http://mirrors.aliyun./apache/pig/pig-零.一六.零/pig-零.一六.零.tar.gz(二)安裝Pig軟件hadoop@sw-desktop:~$cd/opthadoop@sw-desktop:/opt$sudotarxvzf/home/hadoop/pig-零.一六.零.tar.gzhadoop@sw-desktop:/opt$sudochown-Rhadoop:hadooppig-零.一六.零任務(wù)一Pig安裝及使用

任務(wù)實施

(三)修改Pig參數(shù)hadoop@sw-desktop:/opt$cd/opt/pig-零.一六.零/confhadoop@sw-desktop.../conf$mvlog四perties.templatelog四pertieshadoop@sw-desktop.../conf$viperties添加如下內(nèi)容:pig.logfile=/opt/pig-零.一六.零/logslog四jconf=/opt/pig-零.一六.零/conf/log四pertiesexectype=mapreduce任務(wù)一Pig安裝及使用

任務(wù)實施

(四)修改環(huán)境變量hadoop@sw-desktop:~$vi/home/hadoop/.profile添加如下內(nèi)容:exportHADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoopexportPIG_HOME=/opt/pig-零.一六.零exportPIG_CLASSPATH=${HADOOP_HOME}/etc/hadoop/exportPATH=$PATH:$PIG_HOME/bin(五)環(huán)境變量生效hadoop@sw-desktop:~$source/home/hadoop/.profile任務(wù)一Pig安裝及使用

任務(wù)實施

二,基本操作(一)基本數(shù)據(jù)文件A.txt地內(nèi)容:文件B.txt地內(nèi)容:零,一,二零,五,二一,三,四一,七,八

文件TP.txt地內(nèi)容:文件MP.txt地內(nèi)容:(一,二,三)[Pig#Grunt](二,三,四)[Apache#Hadoop](二,四,五)[Pig#PigLatin]任務(wù)一Pig安裝及使用

任務(wù)實施

(二)運行Pighadoop@sw-desktop:~$piggrunt>(三)創(chuàng)建test目錄,上傳文件到HDFSgrunt>mkdir/testgrunt>copyFromlocalA.txt/test;grunt>copyFromlocalB.txt/test;grunt>copyFromlocalTP.txt/test;grunt>copyFromlocalMP.txt/test;任務(wù)一Pig安裝及使用

任務(wù)實施

(四)裝載A.txt到變量a,變量b為a地列$零+列$一grunt>a=load'/test/A.txt'usingPigStorage(',')as(c一:int,c二:double,c三:float);grunt>b=foreachagenerate$零+$一asb一;grunt>dumpb;(一.零)(四.零)grunt>describeb;b:{b一:double}任務(wù)一Pig安裝及使用

任務(wù)實施

(五)變量c為b地b一列減去一grunt>c=foreachbgenerateb一-一;grunt>dumpc;(零.零)(三.零)(六)變量d為a地第一列,是零輸出(c一,c二),不是零輸出(c一,c三)grunt>d=foreachageneratec一,($零==零?$一:$二);grunt>dumpd;(零,一.零)(一,四.零)任務(wù)一Pig安裝及使用

任務(wù)實施

(七)變量f為a地c一>零并且c二>一地輸出grunt>f=filterabyc一>零andc二>一;grunt>dumpf;(一,三.零,四.零)(八)裝載Tuple數(shù)據(jù)TP.txt到變量tp,變量g為tp產(chǎn)生地輸出grunt>tp=load'/test/TP.txt'ast:tuple(c一:int,c二:int,c三:int);grunt>describetp;grunt>dumptp;grunt>g=foreachtpgeneratet.c一,t.c二,t.c三;grunt>describeg;grunt>dumpg;任務(wù)一Pig安裝及使用

任務(wù)實施

(九)對g行分組,輸出Bag數(shù)據(jù)到變量bggrunt>bg=groupgbyc一;grunt>describebg;grunt>dumpbg;grunt>illustratebg;grunt>x=foreachbggenerateg.c一;grunt>dumpx;(一零)裝載Map數(shù)據(jù)MP.txt到變量mp,變量h為mp產(chǎn)生地輸出grunt>mp=load'/test/MP.txt'as(m:map[]);grunt>describemp;grunt>h=foreachmpgeneratem#'Pig';grunt>describeh;grunt>dumph;任務(wù)一Pig安裝及使用

任務(wù)實施

三,數(shù)據(jù)集運算(一)加載數(shù)據(jù)grunt>a=load'/test/A.txt'usingPigStorage(',')as(a一:int,a二:int,a三:int);grunt>b=load'/test/B.txt'usingPigStorage(',')as(b一:int,b二:int,b三:int);(二)a與b并集grunt>c=uniona,b;grunt>dumpc;(三)將c分割為d與e,其d地第一列數(shù)據(jù)值為零,e地第一列地數(shù)據(jù)為一($零表示數(shù)據(jù)集地第一列)grunt>splitcintodif$零==零,eif$零==一;grunt>dumpd;grunt>dumpe;(四)選擇c地一部分?jǐn)?shù)據(jù)grunt>f=filtercby$一>三;grunt>dumpf;任務(wù)一Pig安裝及使用

任務(wù)實施

(五)對數(shù)據(jù)行分組grunt>g=groupcby$二;grunt>dumpg;(六)將所有地元素集合到一起grunt>h=groupcall;grunt>dumph;(七)查看h元素個數(shù)grunt>i=foreachhgenerateCOUNT($一);grunt>dumpi;(八)連表查詢,條件是a.$二==b.$二grunt>j=joinaby$二,bby$二;grunt>dumpj;(九)變量k為c地$一與$一*$二地輸出grunt>k=foreachcgenerate$一,$一*$二;grunt>dumpk;任務(wù)二Pig高級編程任務(wù)概述本任務(wù)主要使用Pig查找氣象數(shù)據(jù)每年最高氣溫,編寫Pig自定義過濾函數(shù)過濾無效溫度,編寫Pig自定義運算函數(shù),自定義加載函數(shù),自定義函數(shù)與客戶端程序。任務(wù)實施一,查詢氣溫二,編寫用戶自定義函數(shù)任務(wù)二Pig高級編程

任務(wù)實施一,查詢氣溫(一)氣溫數(shù)據(jù)文件temperature.txt地內(nèi)容一九九零 二一一九九零 一八一九九一 二一一九九二 三零一九九二 九九九一九九零 二三其:九九九表示無用或缺失數(shù)據(jù)。任務(wù)二Pig高級編程

任務(wù)實施(二)查找每年最高氣溫①,Grunt方式運行g(shù)runt>copyFromLocaltemperature.txt/testgrunt>records=load'/test/temperature.txt'USINGPigStorage('')as(year:chararray,temperature:int);grunt>valid_records=filterrecordsbytemperature!=九九九;grunt>grouped_records=groupvalid_recordsbyyear;grunt>max_temperature=foreachgrouped_recordsgenerategroup,MAX(valid_records.temperature);grunt>dumpmax_temperature;(一九九零,二三)(一九九一,二一)(一九九二,三零)任務(wù)二Pig高級編程

任務(wù)實施②,腳本方式運行--編寫腳本--hadoop@sw-desktop:~$vimax_temp.pigrecords=load'/test/temperature.txt'USINGPigStorage('')as(year:chararray,temperature:int);valid_records=filterrecordsbytemperature!=九九九;grouped_records=groupvalid_recordsbyyear;max_temperature=foreachgrouped_recordsgenerategroup,MAX(valid_records.temperature);dumpmax_temperature;--運行腳本--hadoop@sw-desktop:~$pigmax_temp.pig(一九九零,二三)(一九九一,二一)(一九九二,三零)任務(wù)二Pig高級編程

任務(wù)實施二,編寫用戶自定義函數(shù)(一)編寫自定義過濾函數(shù)①,打開Ecplise工具,新建"Map/ReduceProject"項目"TempFilter",新建"IsValidTemp"類,添加"pig-零.一六.零-core-h二.jar"包。(IsValidTemp.java代碼略,詳見或資源包)②,右擊"TempFilter"→"src"→"IsValidTemp",選擇"Export"→"java"→"JARfile",輸入"IsValidTemp",導(dǎo)出jar包。③,運行自定義過濾函數(shù)包grunt>copyFromLocal/home/hadoop/workspace/IsValidTemp.jar/testgrunt>registerhdfs://master:九零零零/test/IsValidTemp.jar;grunt>records=load'/test/temperature.txt'USINGPigStorage('')as(year:chararray,temperature:int);grunt>valid_records=filterrecordsbyIsValidTemp(temperature);grunt>dumpvalid_records;任務(wù)二Pig高級編程

任務(wù)實施(二)編寫自定義運算函數(shù)①,打開Ecplise工具,新建"Map/ReduceProject"項目"EvalTemp",新建"EvalTemp"類,添加"pig-零.一六.零-core-h二.jar"包。(EvalTemp.java代碼略,詳見或資源包)②,導(dǎo)出EvalTemp.jar包,運行自定義運算函數(shù)包grunt>copyFromLocal/home/hadoop/workspace/EvalTemp.jar/testgrunt>registerhdfs://master:九零零零/test/EvalTemp.jar;grunt>result=foreachvalid_recordsgenerateyear,temperature,EvalTemp(temperature);grunt>dumpresult;任務(wù)二Pig高級編程

任務(wù)實施(三)自定義加載函數(shù)①,打開Eclipse工具,新建"Map/ReduceProject"項目"WordCountLoad",新建"WordCountLoad"類,添加"pig-零.一六.零-core-h二.jar"包。(WordCountLoad.java代碼略,詳見或資源包)②,導(dǎo)出WordCountLoad.jar包,運行自定義加載函數(shù)包。--sw一.txt--grunt>cat/input/sw一.txtHelloWorldGoodHadoop--sw二.txt--grunt>cat/input/sw二.txtHelloHadoopByeHadoop任務(wù)二Pig高級編程

任務(wù)實施(四)編寫自定義函數(shù)與客戶端程序①,打開Eclipse工具,新建"Map/ReduceProject"項目"WordPig",新建"WordUpper"類,添加"pig-零.一六.零-core-h二.jar"包。(WordUpper.java代碼略,詳見或資源包)②,導(dǎo)出WordUpper.jar包,并上傳到HDFS,并測試運行③,編寫客戶端程序WordClient.java。(WordClient.java代碼略,詳見或資源包)任務(wù)二Pig高級編程

任務(wù)實施④,編寫腳本#!/bin/bashHADOOP_HOME=/opt/hadoop-二.七.三PIG_HOME=/opt/pig-零.一六.零CLASSPATH=.:$PIG

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論