标签:on() inter ted context span 不同 lin park top
Spark对数据的核心抽象——弹性分布式数据集(Resilient Distributed Dataset),简称RDD。RDD其实就是分布式的元素集合。在Spark中,对数据的所有操作不外乎创建RDD、转化已有RDD以及调用RDD操作进行求值。而在这背后,Spark会自动将RDD中的数据分发到集群中,并行化执行。
一、创建RDD
将程序中已有的集合传给SparkContext的parallelize()方法:
1、python中parallelize()方法:
lines = sc.parallelize(["pandas","i like pandas"])
2、Scala中的parallelize()方法:
val lines = sc.parallelize(List("pandas","i like pandas"))
更常用的方式是从外部存储中读取数据来创建RDD:
1、Python中的textFile()方法
lines = sc.textFile("/path/to/readme.md")
2、Scala中的textFile()方法
val lines = sc.textFile("/path/to/readme.md")
二、基本RDD
(一)针对各个元素的转化操作
对一个数据为{1,2,3,3}的RDD进行基本的RDD转化操作
map()
将函数应用在RDD中的每个元素,将返回值构成新的RDD,例:rdd.map(x =>x+1) ,结果:{2,3,4,4}
flatmap()
将函数应用于RDD中的每个元素,将返回的迭代器的所有内容构成新的RDD,通常用来切分单词。例:rdd.flatMap(x=>x.to(3)),结果:{1,2,3,2,3,3,3}
filter()
返回一个由通过传给filter()的函数的元素组成的RDD。例:rdd.filter(x=>x!=1),结果{2,3,3}
distinct()
去重。例:rdd.distinct(),结果:{1,2,3}
sample(withReplacement,fraction,[seed])
对RDD采样,以及是否替换。例:rdd.sample(false,0.5),结果:非确定的。
对数据分别为{1,2,3}和{3,4,5}的RDD进行针对两个RDD的转化操作
union()
生成一个包含两个RDD中所有元素的RDD。例:rdd.union(other),结果:{1,2,3,3,4,5}
intersection()
交集,求两个RDD共同的元素的RDD。例:rdd.intersection(other),结果:{3}
subtract()
差集,移除一个RDD中的内容。例:rdd.subtract(other),结果:{1,2}
cartesian()
与另一个RDD的笛卡尔积。例:rdd.cartesian(other),结果:{(1,3),(1,4),(1,5)……(3,5)}
(二)针对各个元素的行动操作
对一个数据为{1,2,3,3}的RDD进行基本的RDD行动操作
collect()
返回RDD中的所有元素。例:rdd.collect(),结果:{1,2,3,3}
count()
RDD中的元素个数。例:rdd.count(),结果:4
countByValue()
各元素在RDD中出现的次数。例:rdd.countByValue(),结果:{(1,1),(2,1),(3,2)}
take(num)
从RDD中返回num个元素。例:rdd.take(2),结果:{1,2}
top(num)
从RDD中返回最前面的num个元素。例:rdd.top(2),结果:{3,3}
takeOrdered(num)(ordering)
从RDD中按照提供的顺序返回最前面的num个元素。例:rdd.takeOrdered(2)(myOrdering),结果:{3,3}
takeSample(withReplacement,num,[seed])
从RDD中返回任意一些元素。例:rdd.takeSample(false,1),结果:非确定的
reduce(func)
并行整合RDD中所有数据。例:rdd.reduce((x,y)=>x+y),结果:9
fold(zero)(func)
和reduce()一样,但是需要提供初始值。例:rdd.fold(0)((x,y)=>x+y),结果:9
aggregate(zeroValue)(seqOp,combOp)
和reduce()相似,但是通常返回不同类型的函数。例:rdd.aggregate((0,0))((x,y)=>(x._1+y,x._2+1),(x,y)=>(x._1+y._1,x._2+y._2)),结果:(9,4)
foreach(func)
对RDD中的每个元素使用给定的函数。例:rdd.foreach(func),结果:无
标签:on() inter ted context span 不同 lin park top
原文地址:https://www.cnblogs.com/xiao02fang/p/12994922.html