RDD编程-数据科学与大数据技术.ppt

  1. 1、本文档共167页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
RDD编程-数据科学与大数据技术.ppt

5.3.3 不同类型RDD的转换 (1)PairRDDFunctions:该扩展类中的方法中输入的数据单元是一个包含两个元素的元组结构。Spark会把其中第一个元素当成Key,第二个当成Value。例如前面提到的reduceByKey(),groupByKey()函数等。 5.3.3 不同类型RDD的转换 (2)DoubleRDDFunctions:这个扩展类包含了多种数值的聚合方法。如果RDD的数值单元能够隐式变换成Scala的double数据类型,则这个方法会非常有用。 5.3.3 不同类型RDD的转换 一些常用的该扩展类的方法如表5-3所示。以data = sc.parallelize(List(1.1,1.2,2.6,2.3,6.5,6.6),2)为例。 5.3.3 不同类型RDD的转换 5.3.3 不同类型RDD的转换 (3)OrderedRDDFunctions:该扩展类的方法需要输入的数据是二元元组,并且key能够排序。例如sortByKey()函数等。 (4)SequenceFileRDDFunctions:这个扩展类包含一些可以创建Hadoop sequence文件的方法。输入的数据必须是二元元组,但需要额外考虑到元组元素能够转换成可写类型。 5.4 数据的读取与保存 Spark支持多种输入输出源,一部分原因是因为Spark本身是基于Hadoop生态圈而构建,特别是Spark可以通过Hadoop MapReduce所使用的InputFormat和OutputFormat接口访问数据。对于存储在本地文件系统或者分布式文件系统中的数据,Spark可以访问多种不同的文件格式,包括文本文件、JSON、SequenceFile等。 5.3.2 Action操作 5.3.2 Action操作 1.常用Action操作 (1)reduce(func : (T,T)=T) : T 通过函数func聚集数据集中的所有元素,func函数接收两个参数,作用在RDD两个相同类型的元素上,返回一个值,这个函数必须满足交换律和结合律,以保证可以被正确地并发执行,可以实现RDD中累加、计数等聚集操作。由定义可知,归并RDD数据后得到的值的类型必须是和RDD元素的类型一致。 5.3.2 Action操作 (1)reduce(func : (T,T)=T) : T 图 5-15描述了RDD进行reduce时的内部RDD操作的实现逻辑图。 图 5-15 5.3.2 Action操作 (1)reduce(func : (T,T)=T) : T 新创建一个RDD,数据集的每个元素都为Int型,调用reduce方法,将每个元素进行累加,结果返回一个Int类型的数据,如代码 5-20所示。 scala val rdd4 = sc.parallelize(Array(3,4,5,6,7)) scala val rdd5 = rdd4.reduce((x,y)=x+y) rdd5: Int = 25 代码 5-20 5.3.2 Action操作 (2)fold(zeroValue : T)(func : (T,T) = T) : T 与reduce类似,聚合每个分区的元素,然后使用具有关联性的操作,以及一个初始值,将每个分区聚合的结果进行归并,不同的是每次对分区内的value聚集时,分区内初始化的值为zeroValue。 5.3.2 Action操作 (2)fold(zeroValue : T)(func : (T,T) = T) : T 给定的func(t1,t2)操作运行修改第一个参数值,并返回其结果,这可以避免对结果值的内存分配,但不应该修改第二个参数值。由定义可知,fold操作之后,用于归并的初始值以及操作的返回值的类型都必须和RDD元素的类型一致。 5.3.2 Action操作 (2)fold(zeroValue : T)(func : (T,T) = T) : T 图 5-16描述了key-value类型的RDD进行fold时的内部RDD操作的实现逻辑图,具体实现如代码 5-21所示。 图 5-16 5.3.2 Action操作 (2)fold(zeroValue : T)(func : (T,T) = T) : T 代码 5-21 scala val data = sc.parallelize(Array((A,1),(B,2),(C,3))) scala data.fold((V0,2))((A,B)=(A._1 + @ + B._1,A._2+B._2)) res5: (String, I

文档评论(0)

zcbsj + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档