目录
1.RDD详解
RDD的概念,注意事项已经在Spark的总体概述中说过,就不再提了,可以自行查看
https://blog.csdn.net/jiezou12138/article/details/88928265
1.1RDD的创建
常见的得到rdd有三种方式
- 集合并行化
- 读取外部文件系统
- 其他方式
集合并行化
通过SparkContext
- java
sc.parallelize(xx,numpartition)
sc.parallelizePairs(seq[Tuple2<k,v>]) 将数据转换成K,V格式的RDD
- spark
sc.makeRDD(xx,numpartition)
sc.parallelize(xx,numpartition)
读取外部文件
- java:
sc.textFile(xxx,minNumPartitions)
- spark:
sc.textFile(xxx,minNumPartitions)
其他方式
读取数据库等等其他的操作。也可以生成RDD。
RDD可以通过transformation由其他的RDD转换而来的。
1.2 transformation算子和action算子
常用的Transformation:
转换 |
含义 |
map(func) |
返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成 |
filter(func) |
返回一个新的RDD,该RDD由经过func函数计算后返回值为true的输入元素组成 |
flatMap(func) |
类似于map,但是每一个输入元素可以被映射为0或多个输出元素(所以func应该返回一个序列,而不是单一元素) |
mapPartitions(func) |
类似于map,但独立地在RDD的每一个分片上运行,因此在类型为T的RDD上运行时,func的函数类型必须是Iterator[T] => Iterator[U] |
mapPartitionsWithIndex(func) |
类似于mapPartitions,但func带有一个整数参数表示分片的索引值,因此在类型为T的RDD上运行时,func的函数类型必须是 (Int, Interator[T]) => Iterator[U] |
sample(withReplacement, fraction, seed) |
根据fraction指定的比例对数据进行采样,可以选择是否使用随机数进行替换,seed用于指定随机数生成器种子 |
union(otherDataset) |
对源RDD和参数RDD求并集后返回一个新的RDD |
intersection(otherDataset) |
对源RDD和参数RDD求交集后返回一个新的RDD |
distinct([numTasks])) |