作為開發人員,我們的重點是簡單,有效的解決方案,因此,最有價值的原則之一就是“保持簡單和愚蠢”。 但是使用Hadoop map-reduce很難堅持這一點。 如果我們要評估多個Map Reduce作業中的數據,那么最終將得到與業務無關但與下文相關的代碼。 大多數非平凡的業務數據處理都涉及大量的map-reduce任務。 這意味著更長的胎面時間和更難測試的解決方案。
Google在FlumeJava論文中提出了針對這些問題的解決方案。 在實施Apache-Crunch時,對同一篇文章進行了修改。 簡而言之, Crunch是一個Java庫,可簡化MapReduce管道的開發 。 它提供了一堆延遲評估的集合,可用于以map reduce作業的形式執行各種操作。
這是布羅克·諾蘭德(Brock Noland)在介紹Crunch時發表的一篇文章中所說的
“ 使用Crunch,對Hadoop和MapReduce知識有限的Java程序員可以利用Hadoop集群。 該程序是用純Java編寫的,不需要使用MapReduce特定的結構,例如編寫Mapper,Reducer或使用Writable對象包裝Java原語。 “
Crunch支持使用簡單的讀取API從各種來源讀取數據,例如序列文件,avro,text,hbase,jdbc
<T> PCollection<T> read(Source<T> source)
您可以導入各種格式的數據,例如json,avro,thrift等,并執行有效的聯接,聚合,排序,笛卡爾和過濾操作。 另外,這些集合上的任何自定義操作都非常容易烹飪。 您要做的就是實現非常簡單的DoFn接口。 您可以在沒有任何map-reduce結構的情況下對DoFn的實現進行單元測試。
我沒有舉任何例子來使用它。 這非常簡單,可以在Apache-Crunch網站上找到相同的內容。
或者,您可以從可用的關鍵模型生成項目。 這還將生成一個簡單的WordCount示例。 可以使用以下方式選擇原型:
mvn archetype:generate -Dfilter=crunch-archetype
該項目有許多不同方面的示例,也可以在Scala中獲得。
現在讓我們來壓縮一些數據!!!
參考: 讓我們從JCG合作伙伴 Rahul Sharma 收緊 到目前為止的The road…博客博客中的大數據 。
翻譯自: https://www.javacodegeeks.com/2012/10/lets-crunch-big-data.html