什么是RDD
RDD(Resilient Distributed Dataset)叫做分布式数据集,是Spark中最基本的数据抽象。代码中是一个抽象类,它代表一个不可变、可分区、里面的元素可并行计算的集合。
RDD的属性
- 一组分区(Partition),即数据集的基本组成单位
- 一个计算每个分区的函数
- RDD之间的依赖关系
- 一个Partitioner,即RDD的分片函数
- 一个列表,存储存取每个Partition的优先位置
RDD的重要特点-----只读
RDD是只读的,要想改变RDD中的数据,只能在现有的RDD基础上创建新的RDD。
由一个RDD转换到另一个RDD,可以通过丰富的操作算子实现
RDD的操作算子包括两类
一类叫做transformations,它是用来将RDD进行转化,构建RDD的血缘关系;
另一类叫做actions,它是用来触发RDD的计算,得到RDD的相关计算结果或者将RDD保存的文件系统中。
RDD的创建
主要讲解两种创建rdd的方式。
1.从数组中创建rdd
2.使用外部文件系统创建rdd
IDE:安装有Scala插件的eclipse
开发语言:Scala
示例代码如下:`
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
object CreateRDD {
def main(args: Array[String]): Unit = {
//创建SparkConf
var conf = new SparkConf();
conf.setMaster("local[*]")
conf.setAppName("tonight")
var sc = new SparkContext(conf);
//调用方法
createByArray(sc)
createByTextFile(sc)
//停止
}
def createByArray(sc:SparkContext)={
println("使用数组创建一个RDD然后遍历这个RDD")
var arr = Array(10,20,30,40,50)
var arrRDD =sc.parallelize(arr)
arrRDD.foreach(println(_))
}
def createByTextFile(sc:SparkContext)={
println("使用外部文件创建一个RDD然后遍历这个RDD")
var path = "C:/Users/dell/Desktop/spark_java_data/data.txt"
var textRDD = sc.textFile(path)
//获取到的数据是文件里的每一行
textRDD.foreach(println(_))
}
}