大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说spark rdd基本操作_python编程快速上手怎么样,希望您对编程的造诣更进一步.
Spark计算框架为适应高并发和高吞吐的数据处理需求,封装了三大数据结构,以处理不同应用:
1)RDD:弹性分布式数据集
2)累加器:分布式共享只写变量
3)广播变量:分布式共享只读变量
RDD(1)
什么是RDD
RDD(Resilient Distributed Dataset)弹性分布式数据集,为Spark中最基本的数据处理模型。
它是一个抽象类,代表弹性、不可变、可分区且其中元素可并行计算的集合。
1)弹性:多方面(存储、容错、计算、分片)
2)分布式:数据存储在集群不同节点上
3)数据集:RDD只封装计算逻辑,不保存数据
4)数据抽象:RDD需要子类实现
5)不可变:RDD封装的计算逻辑不可改变,只能产生根据原来的RDD产生新的RDD,并在其中封装计算逻辑
6)可分区、并行计算
核心属性
1)分区列表
RDD数据结构中存在分区列表,用于并行计算,是实现分布式计算的重要属性
2)分区计算函数
Spark在计算时,是使用分区函数对每一个分区进行计算
3)RDD之间依赖关系
RDD是计算模型的封装,如果需求包含多个计算模型的组合,就需要多个RDD建立依赖关系
4)分区器(option)
数据为KV类型(key-value),可以通过设定分区器自定义数据的分区
5)首选位置(option)
计算数据时,可根据计算节点状态选择节点位置进行计算
基础编程
RDD创建
在Spark中从创建RDD的方式有四种:
1)集合中创建RDD,Spark主要提供两个方法:parallelize、makeRDD
e.g.
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("spark")
val sparkContext = new SparkContext(sparkConf)
val rdd1 = sparkContext.parallelize(List(1,2,3,4))
val rdd2 = sparkContext.makeRDD(list(1,2,3,4))
rdd1.collect().foreach(println)
rdd2.collect().foreach(println)
sparkContext.stop()
makeRDD方法从底层实现看就是parallelize方法
2)从外部存储(文件)创建RDD
由外部存储系统的数据集创建RDD包括:本地的文件系统、所用Hadoop支持的数据集(譬如HDFS、HBase)
e.g.
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("spark")
val sparkContext = new SparkContext(sparkConf)
val fileRDD:RDD[String] = sparkContext.textFile("input")
fileRDD.collect().foreach(println)
sparkContext.stop()
3)从其他RDD创建
通过一个RDD运算完后,再产生新的RDD。
4)直接创建RDD(new)
使用new的方式直接构造RDD,一般由Spark框架自身使用
RDD并行度与分区
e.g.
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("spark")
val sparkContext = new SparkContext(sparkConf)
val dataRDD:RDD[Int] = sparkContext.makeRDD(List(1,2,3,4),4)
val fileRDD:RDD[String] = sparkContext.textFile("input",2)
fileRDD.collect(),foreach(println)
sparkContext.stop()
默认情况下,Spark可以将一个作业切分多个任务后,发送给Executor节点并行计算,能够并行计算的任务数量称之为并行度。这个
数量可以再构建RDD时指定。不过需要注意的是,这里并行执行的任务数量,不是指切分任务的数量
原文地址:https://www.cnblogs.com/unknownshangke/archive/2022/07/01/16427687.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5067.html