什么是SparkRDD
这篇文章将为大家详细讲解有关什么是Spark RDD,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
创新互联公司长期为上千客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为华宁企业提供专业的成都网站制作、成都网站建设,华宁网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制开发。
RDD 字面上就是弹性分布式数据集(Resiliennt Distributed Datasets),它是一种抽象的概念,拥有容错、只读、分布式以及基于内存的特性。这里的弹性是什么意思呢?首先,Spark会自动地在内存不足情况下,将数据‘溢出’到磁盘里,使用 persist 和 cache 方法可以将任意RDD缓存到内存或写入磁盘,程序可自动根据数据情况进行切换;其次就是当某个RDD失效,通过Lineage 依赖链重新计算上有RDD即可找回数据;最后就是失败任务的重试机制,仅对失败的RDD进行特定次数的重试(默认好像4次,这个可以通过spark.stage.maxConsecutiveAttempts和spark.task.maxFailures两个参数调节,一个是针对stage级别的容错,一个是task级别)
明白了RDD的基本概念,如何创建一个RDD呢?刚开始学习的时候可以使用HDFS文件创建,简化代码如下:
SparkConf cf = new SparkConf().setAppName("HDFSFileTest");
JavaSparkContext jsc = new JavaSparkContext(cf);
JavaRDD
RDD的操作分为转换和行动两个部分,Transformation只是RDD之间的转换过程,不进行实际计算:
比如lines里面读出来的是{1,2,3},进行map()转换操作:lines.
map(x=>x+l) ,输出结果就是{2,3,4}
只有Action才产生实际的计算:
lines.count()统计RDD里返回结果:4
RDD之间还存在宽窄依赖,也是一个比较重要的概念,窄依赖是指父 RDD 的每个分区都只被子 RDD 的一个分区所使用,如 map、flatMap、 union、filter、distinct、subtract、sample等;宽依赖是指父 RDD 的每个分区都被多个子 RDD 的分区所依赖,如groupByKey、reduceByKey、join等。
关于什么是Spark RDD就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
网页名称:什么是SparkRDD
转载来源:http://scyanting.com/article/jhdged.html