分割槽模式是將記錄進行分類(即分片、分割槽或分箱),他不關心記錄的順序
目的:將資料集中相似的資料記錄成不同的、更小的資料。
適用範圍:
必須提前知道有多少個分割槽。 比如按天、按月、年等等。
結構:資料是通過分割槽器進行分割槽的。 所以需要自定義分割槽器(partitioner)函式來確定每條記錄應該被分在那個分割槽。
結果:每個分割槽將對應乙個輸出的 part 檔案。
由於每個類別都將被寫入到乙個大檔案中,因此採用基於塊壓縮的 sequencefile 儲存資料是一種很好的方式,同事該方法也被證明是 hadoop 中最有效、最易於使用的資料格式。
已知應用:
按連續值剪裁分割槽
例如:日期或者數值區間
按類別剪裁分割槽
例如:國家區域、**區號、語言形式等等。
分片:如果整個系統中有某個子系統的資料是已經劃分好的。 如不同的磁碟,那麼就需要將記錄劃分到已存在的分片中。
效能分析:
熱點問題, 熱點將是乙個大問題,需要單獨考慮。 如: 4t 檔案需要重新分割槽 分四組 (4個reduce)方便統計。那麼其中一組佔3t 這將引發 單點 reduce 的熱點問題和資料傾斜。 可以考慮二次分割槽。或是其中一組進行打散 變為 (3組 1t + n組 3t 的隨機分割槽。 ) 而這樣做並不影響對分割槽以後的處理, 唯一的影響是將來分析時,需要將分割槽的檔案全部引入即可。
分割槽示例:
作業需要配置成使用自定義分割槽器,同時分割槽器也要重寫。
獲取每條輸入記錄後的 分割槽屬性。 並將分割槽屬性作為key。 然後整條記錄作為 v 。 在 reduce 階段此 k 將被忽略。 (因為木有用了嘛)
partitioner.getpartitioner():
reduce.reduce() 只輸出即可。 輸出迴圈的 v。
來自為知筆記(wiz)
五 資料組織模式 4)全排序 混排。
前面講的 分割槽 分箱模式 都是不關心資料的順序。接下來 全排序 混排序模式 關心的是資料按照指定鍵進行並行排序。全排序解釋 排序在順序結構程式中容易實現,但是在mapreduce 中,或者說在並行程式設計中不易實現。這是典型的 分治法 每個 reduce 將按照鍵對他的資料排序,但這種排序並不是全...
DB2 分割槽表增加分割槽
最近,需要在db2的分割槽表中增加新的分割槽,用於儲存資料,因此,就研究了db2表的分割槽機制。現在總結,實現的方式共有三種,分別是 1 建立臨時表,將原表資料匯入臨時表,之後將原表重建,擴大分割槽 2 通過alter table tab name add partition,為表增加分割槽 3 建...
關於資料訪問模式(五) Layers模式
layers 層 模式,我想大家應該都不會陌生了。不管是硬體驅動程式 tcp ip協議,還是j2ee應用軟體的架構,層 的強大之處在 呢?我們是否真的了解層的劃分呢?我們面對乙個複雜問題的時候,都會想著將這個問題化整為零,分為乙個個子問題,然後逐個擊破。相應 的,處理這樣複雜問題的軟體也會進行劃分。...