Spark中最基本的数据抽象是RDD。
RDD(Resilient Distributed Dataset) 为d性分布式数据集。
- 一组分区
- 对于每个切片(分区),有一个计算函数
- 与其它RDD的依赖关系
- 分区器 K-V
- 优先计算位置
创建RDD的方式有三种
- 集合中创建
- 外部存储系统的数据集创建
- 其它RDD创建
Spark主要提供了两种函数parallelize 和 makeRDD
val value: RDD[Int] = sc.parallelize(List(1,2,3,4)) val value1: RDD[Int] = sc.makeRDD(List(1,2,3,4))外部存储系统的数据集创建
//从外部存储系统获取RDD val value: RDD[String] = sc.textFile("E:\Dashuju\hadoop\SparkCore0821\input.txt") value.collect().foreach(println) //从hdfs获取rdd val value1: RDD[String] = sc.textFile("hdfs://hadoop102:8020/input") value1.collect().foreach(println)从其它RDD创建
val mapRdd: RDD[Int] = rdd.map(_ * 2)Spark 算子 Trasformation
map() 映射
mapPartitions() 以分区为单位进行map
mapPartitionsWithIndex() 带分区号,执行mapPartitions
flatMap() 扁平化 与map *** 作类似,区别是函数返回值为一个集合,并且将每一个该集合的元素拆分出来放到新的RDD中。数据一进,迭代器出。
glom() 将RDD的每一个分区转换为数组
groupBy() 分组 按照传入函数规则分组,存在shuffle过程。
filter() 过滤 接收一个返回值为布尔类型的函数为参数。过滤出为true的值放入新的RDD中。可能产生数据倾斜。不影响分区。
sample() 采样
不放回取样模型-伯努利算法 sample(false,0~1,seed)
放回取样模型-泊松算法 sample(true,2,seed)
distinct去重 对元素内部去重
coalesce() 合并分区 默认不走shuffle,也可以设置参数true,执行shuffle
repartition重新分区 走shuffle
sorBy() 排序默认正序排序
pipe() 调用脚本
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)