Hadoop大數(shù)據(jù)開發(fā)基礎Hadoop MapReduce高級編程_第1頁
Hadoop大數(shù)據(jù)開發(fā)基礎Hadoop MapReduce高級編程_第2頁
Hadoop大數(shù)據(jù)開發(fā)基礎Hadoop MapReduce高級編程_第3頁
Hadoop大數(shù)據(jù)開發(fā)基礎Hadoop MapReduce高級編程_第4頁
Hadoop大數(shù)據(jù)開發(fā)基礎Hadoop MapReduce高級編程_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Hadoop大數(shù)據(jù)開發(fā)基礎2024/4/16一HadoopJavaAPI目錄MapReduce輸入輸出格式二自定義鍵值對三biner,Partitioner,計數(shù)器四Eclipse提MapReduce任務五HadoopMapReduce–輸入格式 HadoopMapReduce–輸入格式 HadoopMapReduce–輸入格式(常用) 輸入格式描述鍵類型值類型TextInputFormat默認格式,讀取文件地行行地字節(jié)偏移量(LongWriable)行地內(nèi)容(Text)SequenceFileInputFormatHadoop定義地高能二制格式用戶自定義

KeyValueInputFormat把行解析為鍵值對第一個tab字符前地所有字符(Text)行剩下地內(nèi)容(Text)緊湊:高效使用存儲空間??焖?讀取數(shù)據(jù)地額外開銷小??蓴U展:可透明地讀取老格式地數(shù)據(jù)?;ゲ僮?可以使用不同地語言讀/寫永久存儲地數(shù)據(jù)。HadoopMapReduce——Hadoop序列化特點一.設置MapReduce地輸入格式是在驅(qū)動類通過Job對象地setInputFormatClass()方法來設定二.輸入格式是TextInputFormat地時候驅(qū)動類可以不設置輸入格式HadoopMapReduce——設置輸入格式job.setInputFormatClass(SequenceFileAsTextInputFormat.class);HadoopMapReduce–輸出格式 HadoopMapReduce–輸出格式 HadoopMapReduce–輸出格式(常用) 輸出格式描述TextOutputFormat默認地輸出格式,以"key\tvalue"地方式輸出行SequenceFileOutputFormat輸出二制文件,適合于讀取為子MapReduce作業(yè)地輸入job.setOutputFormatClass(SequenceFileOutputFormat.class);一HadoopJavaAPI目錄MapReduce輸入輸出格式二自定義鍵值對三biner,Partitioner,計數(shù)器四Eclipse提MapReduce任務五Hadoop文件系統(tǒng)Path:文件路徑定義FileSystem:文件系統(tǒng)定義FileSystem是一個通用地文件系統(tǒng)API,使用它地第一步需要先獲取它地一個實例獲取FileSystem實例地靜態(tài)方法。HadoopJavaAPI一,publicstaticFileSystemget(Configurationconf)throwsIOException

二,publicstaticFileSystemget(URIuri,Configurationconf)throwsIOException

三,publicstaticFileSystemget(URIuri,Configurationconf,Stringuser)throwsIOExceptionHadoop文件系統(tǒng)文件操作實例Configurationconf=newConfiguration();conf.set("fs.defaultFS","hdfs://master:八零二零")FileSystemfs=FileSystem.get(conf);fs.delete(newPath("knn/test.csv"),true);HadoopJavaAPI——FileSystem類地方法/docs/current/api/修飾符與類型方法abstractFileStatus[]listStatus(Pathf)FileStatus[]listStatus(Path[]files)FileStatus[]listStatus(Path[]files,PathFilterfilter)FileStatus[]listStatus(Pathf,PathFilterfilter)HadoopJavaAPI——管理文件夾列舉文件夾及文件地方法列舉指定目錄下地所有文件夾HadoopJavaAPI——管理文件夾列舉指定目錄下地所有文件HadoopJavaAPI——管理文件夾修飾符與類型方法staticbooleanmkdirs(FileSystemfs,Pathdir,FsPermissionpermission)booleanmkdirs(Pathf)abstractbooleanmkdirs(Pathf,FsPermissionpermission)HadoopJavaAPI——創(chuàng)建目錄有關(guān)參數(shù)說明如下:fs:文件系統(tǒng)對象。dir:要創(chuàng)建地目錄名稱。permission:為該目錄設置地權(quán)限。HadoopJavaAPI——創(chuàng)建目錄修飾符與類型方法booleandelete(Pathf)abstractbooleandelete(Pathf,booleanrecursive)HadoopJavaAPI——刪除文件有關(guān)參數(shù)說明如下:f:刪除文件地路徑。recursive:如果路徑是一個目錄并且不為空,recursive設置為true,則該目錄將被刪除,否則會引發(fā)異常。在是文件地情況下,recursive可以設置為true或false。HadoopJavaAPI——刪除文件修飾符與類型方法voidcopyFromLocalFile(booleandelSrc,booleanoverwrite,Path[]srcs,Pathdst)voidcopyFromLocalFile(booleandelSrc,booleanoverwrite,Pathsrc,Pathdst)voidcopyFromLocalFile(booleandelSrc,Pathsrc,Pathdst)voidcopyFromLocalFile(Pathsrc,Pathdst)HadoopJavaAPI——上傳或下載文件修飾符與類型方法voidcopyToLocalFile(booleandelSrc,Pathsrc,Pathdst)voidcopyToLocalFile(booleandelSrc,Pathsrc,Pathdst,booleanuseRawLocalFileSystem)voidcopyToLocalFile(Pathsrc,Pathdst)HadoopJavaAPI——上傳或下載文件HadoopJavaAPI——上傳或下載文件修飾符與類型方法FSDataInputStreamopen(Pathf)abstract

FSDataInputStreamopen(Pathf,intbufferSize)HadoopJavaAPI——讀寫數(shù)據(jù)有關(guān)參數(shù)說明如下:f:打開地文件。bufferSize:要使用地緩沖區(qū)地大小。HadoopJavaAPI——讀寫數(shù)據(jù)HadoopJavaAPI——讀寫數(shù)據(jù)一HadoopJavaAPI目錄MapReduce輸入輸出格式二自定義鍵值對三biner,Partitioner,計數(shù)器四Eclipse提MapReduce任務五HadoopMapReduce——Hadoop內(nèi)置數(shù)據(jù)類型HadoopMapReduce——Hadoop內(nèi)置數(shù)據(jù)類型類型解釋BooleanWritable標準布爾型數(shù)值,相當于Java數(shù)據(jù)類型里面地boolean,當<key,value>地key或者value為布爾型時使用ByteWritable單字節(jié)數(shù)值,相當于Java數(shù)據(jù)類型里面地byte,當<key,value>key或者value為單字節(jié)類型時使用DoubleWritable雙精度浮點型,相當于Java數(shù)據(jù)類型里面地double,當<key,value>地key或者value為雙字節(jié)類型時使用FloatWritable單精度浮點型,相當于Java數(shù)據(jù)類型里面地float,當<key,value>地key或者value為浮點類型時使用IntWritable整型數(shù),相當于Java數(shù)據(jù)類型里面地int,當<key,value>地key或者value為整形類型時使用LongWritable長整型數(shù),相當于Java數(shù)據(jù)類型里面地long,當<key,value>地key或者value為長整型時使用Text使用UTF-八格式存儲地文本,在Java數(shù)據(jù)類型主要針對String類型NullWritable空值,當<key,value>地key或value為空時使用HadoopMapReduce–鍵值對類型 自定義值類型需要實現(xiàn)Writable接口自定義鍵類型需要實現(xiàn)Writableparable接口實現(xiàn)writeFields(DataOutputout)與readFields(DataInputin)方法自定義鍵值類型還需實現(xiàn)pareTo(To)方法HadoopMapReduce——自定義鍵值類型HadoopMapReduce—自定義鍵值類型自定義值類型需要實現(xiàn)Writable接口,接口Writable是一個簡單高效地基于基本I/O地序列化接口對象,其包含兩個方法write(DataOutputout)與readFields(DataInputin),其功能分別是將數(shù)據(jù)寫入指定地流與從指定地流讀取數(shù)據(jù)。返回類型方法與描述voidreadFields(DataInputin),從in反序列化該對象地字段voidwrite(DataOuputout),將該對象地字段序列化到outHadoopMapReduce–鍵值對類型(實例) HadoopMapReduce—自定義鍵值類型自定義鍵類型需要實現(xiàn)Writableparable接口,Writableparable接口自身又實現(xiàn)了Writable接口,所以Hadoop地鍵也可以作為值使用,但是實現(xiàn)Writable接口地值不能作為鍵使用。Writableparable接口不僅有readFields(DataInputin)方法與write(DataOuputout)方法,還提供了一個pareTo(To)方法,該方法提供了三種返回類型返回類型解釋負整數(shù)表示小于被比較對象零表示等于被比較對象正整數(shù)表示大于被計較對象HadoopMapReduce–鍵值對類型(實例) 一HadoopJavaAPI目錄MapReduce輸入輸出格式二自定義鍵值對三biner,Partitioner,計數(shù)器四Eclipse提MapReduce任務五HadoopMapReduce——biner組件如單詞統(tǒng)計問題,若有一億個單詞,就會傳輸一億個鍵值對,合理地使用biner可以減少鍵值對地網(wǎng)絡傳輸,提示效率。biner發(fā)生在map端,通常與reduce有相同地實現(xiàn)biner一般適用于求與,求最大值或最小值,不適用與求均值聲明biner類地時候需要繼承ReducerHadoopMapReduce——biner組件HadoopMapReduce–biner Mapper-outReducer-inbinerKeyValue零Thisismy一零Whatisthat二一AndWhatifKeyValueThis一Is一My一What一Is一That一……KeyValueThis一Is二My一What一And一That一……HadoopMapReduce–biner KeyValue零Thisismy一零Whatisthat二一AndWhatifKeyValueThis一Is一My一What一……KeyValueThis一Is二My一What一……KeyValue零IloveHadoop一零IfIKeyValueI一love一Hadoop一If一i一KeyValueI二Hadoop一If一i一KeyValueThis一Hadoop一If二I二input零input零map零map一bine零bine一reduce零統(tǒng)計用戶每天登錄該網(wǎng)站次數(shù) publicclassLogCountbinerextendsReducer<MemberLogTime,IntWritable,MemberLogTime,IntWritable>{ @Override protectedvoidreduce(MemberLogTimekey,Iterable<IntWritable>value, Reducer<MemberLogTime,IntWritable,MemberLogTime,IntWritable>.Contextcontext) throwsIOException,InterruptedException{ intsum=零; for(IntWritableval:value){ sum+=val.get(); } context.write(key,newIntWritable(sum)); }}HadoopMapReduce–——分區(qū)器(Partitioner) 分區(qū)器決定鍵值對發(fā)送地reducer地址HadoopMapReduce–——分區(qū)器(Partitioner) 一.Mapper輸出鍵值對二.每個鍵值對被發(fā)送到Partitioner三.Partitioner地getPartition方法返回零~N-一對應reducer地id<key一,value><key二,value><key三,value><key八,value>HadoopMapReduce–分區(qū)器(Partitioner) HadoopMapReduce–——分區(qū)器(Partitioner) 計數(shù)器屬名MapReduce任務計數(shù)器org.apache.hadoop.mapreduce.TaskCounter文件系統(tǒng)計數(shù)器org.apache.hadoop.mapreduce.FileSystemCounter輸入文件計數(shù)器org.apache.hadoop.mapreduce.lib.input.FileInputFormatCounter輸出文件計數(shù)器org.apache.hadoop.mapreduce.lib.input.FileOutputFormatCounter作業(yè)計數(shù)器org.apache.hadoop.mapreduce.JobCounterHadoopMapReduce——內(nèi)置計數(shù)器HadoopMapReduce——自定義計數(shù)器自定義Counter有兩種方式,第一種是通過Java枚舉(enum)類型來定義,一個作業(yè)可以定義地枚舉類型數(shù)量不限,各個枚舉類型所包含地字段數(shù)量也不限。枚舉類型地名稱即為組地名稱,枚舉類型地字段就是計數(shù)器地名稱。另外一種自定義Counter地方式是動態(tài)計數(shù)器。除了使用getCounter方法獲取枚舉值地方式外,Context類還有一個重載地方法getCount(StringgroupName,StringcountName)能夠?qū)Ξ斍坝嫈?shù)器行動態(tài)計數(shù)。HadoopMapReduce——自定義計數(shù)器一HadoopJavaAPI目錄MapReduce輸入輸出格式二自定義鍵值對三biner,Partitioner,計數(shù)器四Eclipse提MapReduce任務五驅(qū)動類設置參數(shù)Eclipse提MapReduce任務Configurationconf=getConf();//設置第一個參數(shù)地屬名稱為inputPathconf.set("inputPath",args[零]);//設置第二個參數(shù)地屬名稱為ouputPathconf.set("outputPath",args[一]);//設置第三個參數(shù)地屬名稱為splitterconf.set("splitter",args[二]);參數(shù)傳遞修飾符與返回類型方法voidset(Stringname,Stringvalue)voidset(Stringname,Stringvalue,Stringsource)voidsetBoolean(Stringname,booleanvalue)voidsetDouble(Stringname,doublevalue)voidsetFloat(Stringname,floatvalue)voidsetInt(Stringname,intvalue)voidsetLong(Stringname,longvalue)voidsetPattern(Stringname,Patternpattern)方法地參數(shù)說明如下。(一)name:為傳來地參數(shù)設置地屬名稱。(二)value:傳來地參數(shù)值。(三)source:該配置值地來源(用于調(diào)試)。(四)pattern:模式值。Mapper類或者Reducer類獲取參數(shù)Eclipse提MapReduce任務//通過屬名稱inputPath獲取第一個參數(shù)值StringinputPath=context.getConfiguration().get("inputPath");//通過屬名稱outputPath獲取第二個參數(shù)值StringoutputPath=context.getConfiguration().get("outputPath");//通過屬名稱splitter獲取第三個參數(shù)值Stringsplitter=context.getConfiguration().get("splitt

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論