目录
RDD的创建:(1)通过并行化集合的创建(本地对象转分布式RDD)、
rdd基本概念
RDD:弹性分布式数据集,是spark中最基本的数据抽象。代表一个不可变,可变分区,里面分区可并行计算的集合
RDD的特性:
1.用于存放数据,一个数据合集
2.数据是分布式存储的,用于分布式计算
3.可存在内存或磁盘中
RDD的创建方法:
RDD的创建:(1)通过并行化集合的创建(本地对象转分布式RDD)、
rdd特性1:用于存放数据集
通过两个方法演示:parallelizez(),m
akeRDD() 两种方法都是内存中存储数据
rdd实例
Rdd=sparkcontext.parallelize(m,n)
M:集合对象 n:分区数
Val disData=sc.parallelize([1,2,3,4],3)
import org.apache.spark.{SparkConf, SparkContext}
object
e {
def main(args: Array[String]): Unit = {
val conf=new SparkConf().setAppName("WordCount").setMaster("local")
val sc=new SparkContext(conf)
#定义一个数组
val data=Array(1,2,3,4,5)
#使用parallelize()方法创建RDD
val distData=sc.parallelize(data)
print(distData.partitions.size) #默认分区数1
import org.apache.spark.{SparkConf, SparkContext}
object h {
def main(args: Array[String]): Unit = {
val conf=new SparkConf().setAppName("WordCount").setMaster("local")
val sc=new SparkContext(conf)
#定义一个序列
Val seq=Seq((1,Seq(“iteblog.com”,”sparkhost1.com”)),
(3,Seq(“itebolg.com”,”sparkhost2.com”)),
(2,Seq(“itebolg.com”,”sparkhost3.com”)),
#使用makeRDD()创建RDD
Val iteblog=sc.makeRDD(seq)
#查看RDD的值
Print(iteblog.collect)
#查看分区个数
Print(iteblog.patitions.size)
#第二种用法:根据位置信息查看每个分区的值
Iteblog.preferredLocations(iteblog.partitions(0))
Iteblog.preferredLocations(iteblog.partitions(1))
Iteblog.preferredLocations(iteblog.partitions(2))
RDD特性2:rdd方法会作用在所有分区上
#创建RDD
Val distData=sc.parallelize(List(1,3,45,3,76))
#map()方法求平方值
Val sq_list=distData.map(x=>x*x) #将运算每个分区
#用collect()方法查询数据
查看:定义一个函数one
Val one:PartialFunction[Int,String] ={case 1 =>”one”;case_=>”other”}
#创建RDD
Val data=sc.parallelize(List(2,3,1))
#使用collect()方法,将one函数作为参数
Print(Data.collect(one).collect)
特性3:RDD之间是有依赖关系
#创建rdd
Val test=sc.parallelize(List(“how are you”,”I am fine”,”what about you”))
#查看rdd
Print(test.collect)
#使用map分割字符串后,在查看rdd
Test.map(x=>x.split(“ “)).collect
#用flatMap分割字符串后,在查看rdd
Test。FlatMap(x=>x.split(“ ”))collect
import org.apache.spark.{SparkConf, SparkContext}
object h {
def main(args: Array[String]): Unit = {
val conf=new SparkConf().setAppName("WordCount").setMaster("local")
val sc=new SparkContext(conf)
val rdd1=sc.makeRDD(List(1,3,5,3))
val rdd2=sc.makeRDD(List(2,4,5,1))
rdd1.cartesian(rdd2).collect.foreach(println)
}
}
import org.apache.spark.{SparkConf, SparkContext}
object
r {
def main(args: Array[String]): Unit = {
val conf=new SparkConf().setAppName("WordCount").setMaster("local")
val sc=new SparkContext(conf)
val rdd1=sc.parallelize(List(('a',1),('b',2),('c',3)))
val rdd2=sc.parallelize(List(('d',1),('e',2),('c',3)))
rdd1.subtract(rdd2).collect.foreach(println)
rdd2.subtract(rdd1).collect.foreach(println)
}
}
#求rdd1和rdd2彼此的补集
(a,1)(b,2) (d,1)(e,2)