MR程式編寫

2021-07-16 09:00:18 字數 1244 閱讀 2681

做了乙個有關於讀取三張hbase表處理進行統一處理的專案:

list scans = new arraylist<>();

scan scan1 = new scan();

scan1.setattribute(scan.scan_attributes_table_name, "7111".getbytes());

scans.add(scan1);

scan scan2 = new scan();

scan2.setattribute(scan.scan_attributes_table_name, "8111".getbytes());

scans.add(scan2);

scan scan3 = new scan();

scan3.setattribute(scan.scan_attributes_table_name, "9111".getbytes());

scans.add(scan3);

(2)在hbase中不同的表有相同的行健,可以存在相同的列族與列。此時需要篩選資料得到不同的資料,這時候就需要區分度,這次是僥倖,行鍵由時間戳構成易於區分。可以在全域性configure中傳遞資料,使用context.getconfiguration.get()獲取資料,但是在每次執行map(實際上每次讀取hbase表,都是重新執行一次map階段)的時候又會重新獲取configuration,所以獲取的資料又是初始值。

(3)寫入本地檔案,在本地執行mr的時候,在靜態**塊中定義好

conf.set("fs.default.name", "hdfs://localhost:9000")
如果新增這句**,預設的是hdfs檔案系統機hadoop儲存系統,如果不新增的話便是儲存在本地的系統中。但是還沒有研究如果在分布式條件下是什麼情況,還有就是偽分布式條件下的集群執行。

(4)在mr執行的過程中,map階段結束後,進入shuffle階段會進行一次排序,此時如果設定了combine,又會進行一次設定即執行了一次reducer**階段。切記是否需要兩次同時執行。

(5)csv檔案是逗號分隔符檔案(並不侷限於這一種符號,還可以是其他的符號,如分號、tab鍵、引號等),這種檔案可以使用excel檔案進行開啟,在開啟時,首先新建乙個excel檔案,然後資料---本地文字--選擇csv檔案,接下來根據提示進行操作就可以了。

(6)conf在加入引數的時候一定要在job定義之前,因為job的定義是以configuration問引數的。

Hadoop實戰 四 編寫MR程式

正文之前,先放出本章重點概括 一 mr程式框架 myjob類,內含 2.run 作為driver,以例項化和配置作業 二 hadoop streaming 使用unix中的流域程式進行互動 三 mr框架擴充套件 combiner 解決shuffle任務過於繁重 資料傾斜 資料非均勻分布,某些redu...

MR架構 MR工作流程

一 mr的架構 1 簡介 mapreduce 是乙個軟體框架,基於該框架能夠容易地編寫應用程式,這些應用程式能夠執行在由上千個商用機器組成的大集群上,並以一種可靠的,具有容錯能力的方式並行地處理上 tb級別的海量資料集 2 4個物件 客戶端 編寫mapreduce 程式,配置作業,提交作業,這就是程...

MR程式的幾種提交執行模式

mr程式的幾種提交執行模式 1 在windows的eclipse裡面直接執行main方法,就會將job提交給本地執行器localjobrunner執行 配置path d hadoop 2.7.2 bin 配置hadoop home d hadoop 2.7.2 複製 hadoop.dll和winut...