如何在Redis上儲存的資料上對Java執行分散式MapReduce
MapReduce是一個框架,當今的程式設計師可以使用它來編寫能夠使用現代分散式資料處理方法處理大量資料的應用程式。
這種處理方法在當今的組織中非常流行。
由於它允許在大型商用硬體叢集上並行處理資料,因此
MapReduce
可以顯著加快資料處理速度。
在這篇文章中,我們將看看如何
MapReduce
使用
Redisson
執行
Redis中儲存的資料
。
什麼是MapReduce?
MapReduce
是一種可以用Java實現的分散式計算的程式模型。
該演算法包含兩個關鍵任務,稱為
Map
和
Reduce
。
該
Map
任務
的目的
是將資料集轉換為另一個資料集,其中元素被分解為稱為元組的鍵/值對。
該
Reduce
任務將這些資料元組組合成一小組元組,使用地圖的輸出作為輸入。
分散式計算意味著將任務分成幾個單獨的程式,然後可以在大型商用硬體叢集上並行執行。
一旦
MapReduce
將大資料集的各個元素分解為元組,然後進一步將它們縮小為較小的集合,剩餘的資料可以並行處理,這可以顯著加快需要對資料執行的處理。
何時需要使用MapReduce處理Redis資料?
在許多情況下,使用它
MapReduce
來處理Redis資料
很有幫助
。
通常,它們的共同點是您需要處理的資料量非常大。
舉一個簡單的 例子 ,您可以考慮一種情況,其中您有大量組織的月度能耗資料。 現在假設您需要處理此資料以生成每個組織的最大使用年份,最小使用年份等結果。 雖然編寫演算法來執行這種處理對於有經驗的程式設計師來說並不困難,但是如果必須執行大量資料,許多這樣的演算法將花費很長時間來執行。
作為長處理時間問題的解決方案,您可以使用
MapReduce
減少資料集的總體大小,從而使處理速度更快。
對於許多組織來說,處理時間的減少可能非常重要,因為它可以釋放硬體,以便可以用於其他計算任務。
還有更多的情況
MapReduce
使用Redisson儲存在Redis中的
分散式
資料可能是非常有用的。
例如,
MapReduce
如果您需要快速,可靠且準確地計算非常大的檔案或檔案集合的字數
,則使用
特別有用。
在Redis中儲存的資料上執行分散式MapReduce的示例
以下是如何使用
MapReduce
建立生成準確字數的有效演算法
的示例
。
這似乎是一個非常簡單的任務,但使用
MapReduce
非常重要的是減少非常大的文字塊或大量檔案集的處理時間。
請檢視以下程式碼,瞭解此演算法如何使用
Redisson
MapReduce
提供的
文字資料並對其進行處理以可靠地生成準確的字數。
步驟1
建立Redisson配置:
//來自JSON
配置 config = 配置。fromJSON(...)
//來自YAML
配置 config = 配置。來自YAML(...)
//或動態
Config config = new Config();
...
第2步
建立Redisson例項:
RedissonClient redisson = Redisson。create(config);
第3步
定義
Mapper
物件。
這適用於每個
Map
條目,並按空格分割值以分隔單詞:
公共 類 WordMapper 實現 RMapper < String,String,String,Integer > {
@覆蓋
public void map(String key,String value,RCollector < String,Integer > collector){
String [] words = value。split(“[^ a-zA-Z]”);
for(String word:words){
收藏家。發射(字,1);
}
}
}
}
第4步
定義
Reducer
物件。
這計算每個單詞的總和。
公共 類 WordReducer 實現 RReducer < String,Integer > {
@覆蓋
public Integer reduce(String reducedKey,Iterator < Integer > iter){
int sum = 0 ;
而(ITER。hasNext()){
整數 i =(整數)iter。next();
sum + = i ;
}
返還 金額 ;
}
}
第5步
定義
Collator
物件(可選)。
這會計算單詞總數。
公共 類 WordCollator 實現 RCollator < String,Integer,Integer > {
@覆蓋
public Integer collate(Map < String,Integer > resultMap){
int result = 0 ;
為(整數 計數:結果對映。值()){
結果 + = 計數 ;
}
返回 結果 ;
}
}
第6步
以下是如何一起執行它:
RMap < String,String > map = redisson。getMap(“wordsMap”);
地圖。put(“line1”,“愛麗絲開始變得非常疲憊”);
地圖。把(“line2”,“坐在她姐姐的銀行和”);
地圖。放(“line3”,“她無事可做一次”);
地圖。put(“line4”,“偷看了她姐姐讀的書”);
地圖。put(“line5”,“但它沒有圖片或對話”);
地圖。put(“line6”,“以及書籍的用途”);
地圖。put(“line7”,“思想愛麗絲沒有圖片或談話”);
RMapReduce < String,String,String,Integer > mapReduce
= 地圖。< String,Integer > mapReduce()
。mapper(新的 WordMapper())
。reducer(new WordReducer());
//計算單詞的出現次數
Map < String,Integer > mapToNumber = mapReduce。execute();
//計算總字數量
整數 totalWordsAmount = mapReduce。execute(new WordCollator());
MapReduce
也可用於收集型別的物件,其中包括
Set
,
SetCache
,
List
,
SortedSet
,
ScoredSortedSet
,
Queue
,
BlockingQueue
,
Deque,
,
BlockingDeque
,
PriorityQueue
,和
PriorityDeque
。
如何使用Redisson對Redis中儲存的資料執行MapReduce
Redisson 是一個最先進的Redis客戶端,為使用Java進行程式設計和資料處理提供了無限可能。 從最大的企業到最小的初創公司,各種各樣的公司使用Redisson透過Redis為他們的Java應用程式提供支援。
作為一個高度複雜的Redis客戶端,Redisson提供了服務,物件,集合,鎖和同步器的分散式實現。 它支援一系列Redis配置,包括單個,叢集,標記或主從配置。
MapReduce
如果您已經使用
Redisson
在Redis中儲存大量資料,
則
使用
是一個很好的選擇
。
Redisson提供了一種基於Java的
MapReduce
程式設計模型,可以輕鬆處理儲存在Redis中的大量資料。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31557424/viewspace-2221261/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Redis 分散式儲存Redis分散式
- 分散式儲存中的資料分佈策略分散式
- 阿里雲資料庫Redis正式上線Tair持久儲存系列阿里資料庫RedisAI
- 分散式資料恢復-hbase+hive分散式儲存資料恢復方案分散式資料恢復Hive
- 在 SAP BTP Kyma Runtime 上使用 Redis 讀取和儲存資料Redis
- 【大資料】BigTable分散式資料儲存系統分散式資料庫 | 複習筆記大資料分散式資料庫筆記
- DAOS 分散式非同步物件儲存|資料平面分散式非同步物件
- 如何延長儲存伺服器上資料的儲存時間?伺服器
- 阿里雲 Redis 混合儲存版上線阿里Redis
- 「星案例」西藏銀行攜手XSKY:雪域高原上的分散式儲存應用實踐分散式
- 分散式系統中的資料儲存方案實踐分散式
- 大資料分散式儲存的部署模式:分離式or超融合大資料分散式模式
- HDFS分散式儲存分散式
- 星環科技多模型資料統一儲存的大資料分散式儲存平臺方案分享模型大資料分散式
- 分散式系統技術:儲存之資料庫分散式資料庫
- 分散式文件儲存資料庫之MongoDB副本集分散式資料庫MongoDB
- 分散式文件儲存資料庫之MongoDB索引管理分散式資料庫MongoDB索引
- 分散式系統中資料儲存方案實踐分散式
- 【Redis】redis各型別資料儲存分析Redis型別
- Vsan資料恢復—Vsan分散式儲存資料恢復案例資料恢復分散式
- Ubuntu 上更改 MySQL 資料庫資料儲存目錄UbuntuMySql資料庫
- 海量圖片儲存,杉巖分散式物件儲存輕鬆應對分散式物件
- 【融雲分析】從過剩儲存資源到分散式時序資料庫的長儲存分散式資料庫
- 【儲存資料恢復】儲存上的raid5陣列崩潰的資料恢復案例資料恢復AI陣列
- 分散式文件儲存資料庫之MongoDB訪問控制分散式資料庫MongoDB
- 分散式文件儲存資料庫之MongoDB分片叢集分散式資料庫MongoDB
- 行式儲存 列式儲存
- 在 Kubernetes 上快速測試 Citus 分散式 PostgreSQL 叢集(分散式表,共置,引用表,列儲存)分散式SQL
- GlusterFS分散式儲存資料的恢復機制(AFR)的說明分散式
- Redis資料儲存和讀寫Redis
- redis-5.資料儲存格式Redis
- 分散式儲存ceph 物件儲存配置zone同步分散式物件
- DAOS 分散式非同步物件儲存|儲存模型分散式非同步物件模型
- win系統如何在mac上執行Mac
- 分散式檔案儲存庫MinIO可還行?分散式
- MyCat的坑如何在分散式中介軟體DBLE上改善分散式
- 分散式計算技術(上):經典計算框架MapReduce、Spark 解析分散式框架Spark
- 分散式文件儲存資料庫之MongoDB基礎入門分散式資料庫MongoDB