簡體   English   中英

HBase MapReduce拆分掃描不同的映射器

[英]HBase MapReduce split scan for different mappers

我正在努力以適當的方式分布我的HBase行,以完成多個地圖任務。 我的目的是通過行鍵拆分我的掃描,並將每個行分配給地圖作業。

到目前為止,我只能定義一個掃描,其中我的映射器每次總是獲得一行。 但這不是我想要的-我需要設置map-input。

因此,有可能拆分我的HBase表響應。 掃描到n行,然后輸入n個映射器?

我不是在尋找一種解決方案來啟動MapReduce作業來編寫n個文件,而另一個MapReduce作業來重新讀取它們作為獲取這些集合的文本輸入。

提前致謝!

映射器總是一次只能獲得一行-如果要與地圖側的多行相關聯,這就是map-reduce的工作方式,您可以自己執行操作(例如,使用一些靜態變量等),也可以將邏輯寫為組合器 ,它是地圖端的“減少”步驟。

請注意,您仍然需要一個reducer來處理相關鍵由不同的映射器處理的極端情況-因為在磁盤上對hbase鍵進行排序時,您只會在拆分的末尾/開始得到它。 您可以通過預先拆分來降低發生這種情況的風險

仔細研究實現,我看到一次掃描就調用映射步驟,結果恰好使用了一個映射器。 這就是為什么完全不拆分輸入集的原因。

使用掃描列表,並將其提供給TableMapReduceUtil.initTableReducerJob函數,在每次掃描時對輸入集進行拆分。 因此,可以定義MapReduce作業中使用的映射器的數量。

另一種方法是擴展TableInputFormat類並重寫split方法。

正如Arnon Rotem-Gal-Oz所說的那樣,在映射器的地圖功能中,一次只能訪問一行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM