温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

什么是Spark RDD

发布时间:2021-12-16 20:25:52 来源:亿速云 阅读:119 作者:柒染 栏目:大数据

这篇文章将为大家详细讲解有关什么是Spark RDD,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

   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<String> lines = jsc.textFile("hdfs://sparkT:9000/spark.txt");

    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就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI