深入篇greenplum分布式數(shù)據(jù)庫開發(fā)入門到精通41講40使用gp mapreduce1課件_第1頁
深入篇greenplum分布式數(shù)據(jù)庫開發(fā)入門到精通41講40使用gp mapreduce1課件_第2頁
深入篇greenplum分布式數(shù)據(jù)庫開發(fā)入門到精通41講40使用gp mapreduce1課件_第3頁
深入篇greenplum分布式數(shù)據(jù)庫開發(fā)入門到精通41講40使用gp mapreduce1課件_第4頁
深入篇greenplum分布式數(shù)據(jù)庫開發(fā)入門到精通41講40使用gp mapreduce1課件_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

基于GreenplumHadoop分布式平臺的大數(shù)據(jù)解決方案GreenplumHadoop講師:迪倫(北風網(wǎng)版權(quán)所有)使用GPMapReduce(1)

GPMapReduce編程課程目標GPMapReduce編程GPMapReduce使用YAML文檔框架并實現(xiàn)了自己的YAML模式定義輸入每個MapReduce作業(yè)至少需要一個輸入數(shù)據(jù)源數(shù)據(jù)源可以是單個文件、gpfdist文件服務(wù)、數(shù)據(jù)庫的表、SELECT語句或者一個操作系統(tǒng)命令的輸出數(shù)據(jù)單個外部文件(FILE)輸入

必須是TEXT或者CSV格式;

如果沒有指定COLUMNS,缺省整體作為一個大的文本列;

GP的SUPERUSER才可以執(zhí)行MapReduce作業(yè)-INPUT:NAME:my_file_inputFILE:seghostname:/var/data/gpfiles/employees.txtCOLUMNS-first_nametext-last_nametext-depttext-hire_datetextFORMAT:TEXTDELIMITER:'|'GPMapReduce編程gpfdist外部文件(FILE)輸入

可以利用GP系統(tǒng)的全部Segment來讀取外部數(shù)據(jù)文件;

除非gp_external_grant_privileges設(shè)置為on,否則必須是GP的SUPERUSER才可以執(zhí)行使用GPFDIST作為輸入的MapReduce作業(yè)-INPUT:NAME:my_distributed_input#specifiesthehost,portandthedesiredfilesserved#bygpfdist./*denotesallfilesonthegpfdistserverGPFDIST:-gpfdisthost:8080/*COLUMNS-first_nametext-last_nametext-depttext-hire_datetextFORMAT:TEXTDELIMITER:'|'

GPMapReduce編程數(shù)據(jù)庫輸入

使用已經(jīng)存在GP的表作為數(shù)據(jù)源,列和數(shù)據(jù)類型在表中已經(jīng)定義-INPUT:NAME:my_table_inputTABLE:sales

指定一個查詢作為數(shù)據(jù)源,列和數(shù)據(jù)類型在源表中已經(jīng)定義-INPUT:NAME:my_table_inputQUERY:SELECTvendor,amtFROMsalesWHEREregion='usa';操作系統(tǒng)可執(zhí)行輸入

一個EXEC輸入允許指定一個SHELL命令或者腳本在所有的Segment執(zhí)行來作為數(shù)據(jù)源-INPUT:NAME:my_query_inputEXEC:/var/load_scripts/get_log_data.shCOLUMNS-urltext-datetimestampFORMAT:TEXTDELIMITER:'|'GPMapReduce編程定義Map函數(shù)一個Map函數(shù)根據(jù)一個輸入行生成0個或多個輸出行輸入輸出都會有兩個文本類型的參數(shù)key和value輸入的格式在MAP說明的PARAMETERS定義中指定輸出的格式在RETURNS定義中使用SQL數(shù)據(jù)類型指定MAP的定義還包括FUNCTION定義,通過LANGUAGE指定特定的腳本語言,目前支持PERL和PYTHONMap函數(shù)就是使用腳本語言訪問PARAMETERS的數(shù)據(jù),以及為RETURNS準備需要的輸出數(shù)據(jù)GPMapReduce編程Perl語言的Map函數(shù)Map函數(shù)的PARAMETERS參數(shù)可以通過@_獲得取值列表Map函數(shù)輸出必須是PERL的hash表,RETURNS定義中的每個參數(shù)都有一個hash鍵通過return_next實現(xiàn)單行輸入多行輸出調(diào)用returnunderf將通知MapReduce運行引擎處理下一個輸入記錄例:將逗號分割的行轉(zhuǎn)換為多行(“|”表示隨后的行作為單一字符串對待)-MAP:NAME:perl_splitterLANGUAGE:PERLPARAMETERS:[key,value]RETURNS:[keytext,valuetext]FUNCTION:|my($key,$value)=@_;my@list=split(/,/,$value);formy$item(@list){return_next({"key"=>$key,"value"=>$item});}returnundef;GPMapReduce編程Python語言的Map函數(shù)Map函數(shù)的參數(shù)可以直接作為本地參數(shù)來使用Map函數(shù)的輸出必須是Python字典,RETURNS定義中的每個參數(shù)都有一個key通過Python的yield關(guān)鍵字實現(xiàn)單行輸入多行輸出如果已知Map函數(shù)對于每個輸入值僅返回單個輸出值,可以指定Map定義的描述為MODE:SINGLE,并且調(diào)用Pythonreturn來返回hash散列,而不是用yield例:將逗號分割的行轉(zhuǎn)換為多行-MAP:NAME:py_splitterLANGUAGE:PYTHONPARAMETERS:[key,value]RETURNS:[keytext,valuetext]FUNCTION:|list=value.split(',')foriteminlist:yield{'key':key,'value':item}GPMapReduce編程定義Reduce函數(shù)Reduce函數(shù)將匹配的多個輸入值生成一個獨立的縮減值GP提供了多種預(yù)定義的Reduce函數(shù),針對value列進行操作:IDENTITY–返回(key,value)集并不做任何改變SUM–求和AVG–求平均COUNT–計數(shù)MIN–求最小值MAX–求最大值通過EXECUTE直接使用這些Reduce函數(shù)。例如:EXECUTE-RUNSOURCE:input_or_task_nameMAP:map_function_nameREDUCE:IDENTITYGPMapReduce編程Reduce函數(shù)要實現(xiàn)定義以符合多行輸入數(shù)據(jù),必須定義與Reduce相關(guān)的Transition函數(shù),其針對每行輸入都會調(diào)用使用state變量作為第一個輸入?yún)?shù)在調(diào)用Transition函數(shù)期間能夠記住相關(guān)信息state變量將被以Initialize定義的值初始化,其值必須是SQL數(shù)據(jù)類型在處理期間,state變量記錄著Transition函數(shù)最近的返回值在Transition函數(shù)處理完一組記錄之后,state變量將被傳給Finalize函數(shù),F(xiàn)inalize函數(shù)可以返回多記錄自定義Reduce函數(shù)可以傳入任意數(shù)量的列KEYS定義了用于將輸入劃分到不同子集以達到縮減目的的列為了優(yōu)化性能,還可以選擇定義一個Consolidate函數(shù),其將多個state組合到一個state變量GPMapReduce編程PerlReduce函數(shù)例子:計算所有正數(shù)的平均值-REDUCE:NAME:perl_pos_avgTRANSITION:perl_pos_avg_transCONSOLIDATE:perl_pos_avg_consFINALIZE:perl_pos_avg_finalINITIALIZE:'0,0'KEYS:[key]-TRANSITION:NAME:perl_pos_avg_transPARAMETERS:[state,value]RETURNS:[statetext]LANGUAGE:perlFUNCTION:|my($state,$value)=@_;my($count,$sum)=split(/,/,$state);if($value>0){$sum+=$value;$count++;$state=$count.",".$sum;}return$state;GPMapReduce編程-CONSOLIDATE:NAME:perl_pos_avg_consPARAMETERS:[state,value]RETURNS:[statetext]LANGUAGE:perlFUNCTION:|my($state,$value)=@_;my($scount,$ssum)=split(/,/,$state);my($vcount,$vsum)=split(/,/,$value);my$count=$scount+$vcount;my$sum=$ssum+$vsum;return($count.",".$sum);-FINALIZE:NAME

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論