rdd相关

RDD(Resilient Distributed Dataset) 弹性分布式数据集

不可变的分布式对象集合,每个RDD被分为多个分区,分区运行在集群中的不同节点上。

1.创建方法:

1)读取外部数据集

2)驱动器程序里分发驱动器程序中的对象集合(list/set)

调用示例:

import org.apache.spark.SparkContext

import org.apache.spark.SparkContext._

val sc = new SparkContext(conf)

读取外部数据集

lines = sc.textFile("filename")

对集合进行并行化(parallelize)

lines = sc.parallelize(List(1,2,3,4,5))

2.操作类型

1)转化操作(transformation)

由一个RDD生成一个新的RDD

2)行动操作(action)

对RDD计算一个结果,将结果返回到驱动器程序中。

基本RDD

1.针对各个元素的转化操作

map():接收一个函数,将函数用于RDD的每个元素,返回新的RDD以及对应元素的值

filter():接收一个函数,将RDD中满足该函数的元素放入新的RDD中

val input = sc.parallelize(List(1,2,3,4))

val result = input.map(x=>x*x)

println(result.collect().mkString(","))

常用转化操作:

map():函数构成新的RDD

flatMap():函数用于新的RDD,通常用来切分单词

filter():反馈一个通过传给filter()的函数元素组成的rdd ex: rdd.filter(x=>x!=1)

distinct():去重

sample(withReplacement,fraction,[seed]):对rdd采样

union():生成 一个包含两个rdd中所有元素的rdd,

intersection():求两个rdd共同的元素的rdd

subtract():移除一个rdd中的内容

cartesian():与另一个rdd的笛卡尔积

常用行动操作:

reduce():接受一个函数作为参数,比如累加,方便计算元素总和,元素个数etc

fold():接受一个函数,加上一个初始值作为每个分区第一次调用时的结果

collect():返回rdd中所有元素

count():返回元素个数

countByValue():各元素在rdd中出现的次数

take(num):返num个元素

top(m):返回前m个元素

takeOrdered(num)(ordering):rdd中按提供的顺序返回最前面num个元素

takeSample(withReplacement,num,[seed]).reduct(func):从rdd中任意返回一些元素

aggregate(zeroValue)(seqOp,combOp):类似reduct(),通常返回不同类型的函数 

foreach(func):对rdd中每个元素使用给定的函数

持久化存储:

偌rdd.persist() unpersist()

MEMORY_ONLY

MEMORY_ONLY_SER

MEMORY_AND_DISK

MEMORY_AND_DISK_SER

DISK_ONLY

原文地址:https://www.cnblogs.com/supermanwx/p/9111233.html