RDD创建笔记

本文介绍了Spark中的RDD(弹性分布式数据集)概念,包括其特性(数据分布、分区计算、依赖关系),创建方法(通过并行化集合和外部数据源),以及常用操作如map、flatMap、cartesian和subtract。
摘要由CSDN通过智能技术生成

目录

rdd基本概念

RDD的特性:

RDD的创建方法:

RDD的创建:(1)通过并行化集合的创建(本地对象转分布式RDD)、

rdd特性1:用于存放数据集

RDD特性2:rdd方法会作用在所有分区上

特性3:RDD之间是有依赖关系

(2)读取外部数据源(读取文件)


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)
  }
}

#rdd1rdd2彼此的补集

(a,1)(b,2)      (d,1)(e,2)

(2)读取外部数据源(读取文件)

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值