作为开发人员,我们的重点是简单,有效的解决方案,因此,最有价值的原则之一就是“保持简单和愚蠢”。 但是使用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