仓酷云

标题: 发布一篇用于简化MapReduce编程的Java库Apache Crunch简介 [打印本页]

作者: 透明    时间: 2015-1-18 11:02
标题: 发布一篇用于简化MapReduce编程的Java库Apache Crunch简介
java比较简单,没有C++的烦琐,但学习时最好有C++为基础.与JSP和SQL起应用,功能强大.
ApacheCrunch(孵化器项目)是基于Google的FlumeJava库编写的Java库,用于创立MapReduce流水线。与其他用来创立MapReduce功课的高层工具(如ApacheHive、ApachePig和Cascading等)相似,Crunch供应了用于完成如毗连数据、实行聚合和排序纪录等罕见义务的形式库。而与其他工具分歧的是,Crunch其实不强迫一切输出遵守统一数据范例。相反,Crunch利用了一种定制的范例体系,十分天真,可以间接处置庞大数据范例,如工夫序列、HDF5文件、ApacheHBase表和序列化对象(像protocolbuffer或Avro纪录)等。
Crunch其实不想制止开辟者以MapReduce体例思索,而是实验使之简化。只管MapReduce有诸多长处,但对良多成绩而言,并不是准确的笼统级别:年夜部分成心思的盘算都是由多个MapReduce功课构成的,情形常常是如许——出于功能思索,我们必要将逻辑上自力的操纵(如数据过滤、数据投影和数据变更)组合为一个物理上的MapReduce功课。
实质上,Crunch计划为MapReduce之上的一个薄层,但愿在不就义MapReduce力气(大概说不影响开辟者利用MapReduceAPI)的条件下,更简单在准确的笼统级别办理手头成绩。
只管Crunch会让人想起汗青久长的CascadingAPI,可是它们各自的数据模子有很年夜分歧:依照知识复杂总结一下,能够以为把成绩看作数据流的人会偏幸Crunch和Pig,而思索SQL作风毗连的人会偏幸Cascading和Hive。
Crunch的理念
PCollection和PTable<K,V>是Crunch的中心笼统,前者代表一个散布式、不成变的对象汇合,后者是Pcollection的一个子接口,个中包括了处置键值对的分外办法。这两个中心类撑持以下四个基础操纵:
parallelDo:将用户界说函数使用于给定PCollection,前往一个新的PCollection作为了局。groupByKey:将一个PTable中的元素依照键值排序并分组(同等于MapReduce功课中的shuffle阶段)
combineValues:实行一个联系关系操纵来聚合来自groupByKey操纵的值。
union:将两个或多个Pcollection看作一个假造的PCollection。
Crunch的一切高阶操纵(joins、cogroups和setoperations等)都是经由过程这些基础原语完成的。Crunch的功课企图器(jobplanner)吸收流水线开辟者界说的操纵图,将操纵分化为一系列相干的MapReduce功课,然后在Hadoop集群上实行。Crunch也撑持内存实行引擎,可用于当地数据下流水线的测试与调试。
有些成绩能够从可以操纵定制数据范例的年夜量用户界说函数受害,而Crunch就是为这类成绩计划的。Crunch中的用户界说函数计划为轻量级的,为满意使用程序的必要,仍旧供应了完全的会见底层MapReduceAPI的功效。Crunch开辟者也能够利用Crunch原语来界说API,为客户供应触及一系列庞大MapReduce功课的初级ETL、呆板进修和迷信盘算功效。
Crunch起步
能够从Crunch的网站:http://incubator.apache.org/crunch/download.html下载最新版本的源代码或二进制文件,大概利用在MavenCentral发布的dependencies。
<p>
C#跟java类似,但是在跨平台方面理论上可以跨平台,实际上应用不大,执行性能优于java,跟C++基本一致,但是启动速度还是慢.代码安全,但容易性能陷阱.
作者: 因胸联盟    时间: 2015-1-18 17:00
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
作者: 若天明    时间: 2015-1-22 15:06
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
作者: 蒙在股里    时间: 2015-1-26 16:54
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
作者: 乐观    时间: 2015-1-26 17:02
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
作者: 小妖女    时间: 2015-2-4 16:40
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
作者: 海妖    时间: 2015-2-10 04:07
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
作者: 老尸    时间: 2015-3-10 05:01
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
作者: 若相依    时间: 2015-3-17 04:38
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
作者: 深爱那片海    时间: 2015-3-23 19:25
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2