Spark学习

RDD的创建方式

1)从Hadoop文件系统输入创建,如HDFS,HIVE,HBase;

2)从父RDD转换得到新的RDD,如常见的transformation

3)通过parallelize或者makeRDD将单机数据转换为RDD

4)基于数据流创建,如kafka流;

一、从集合创建RDD

1、利用parallelize,函数是def parallelize[T](seq: Seq[T], numSlices: Int = defaultParallelism)(implicit arg0: ClassTag[T]): RDD[T]

var rdd = sc.parallelize(Array(1,2,3,45),3)

var rdd1 = sc.parallelize(1 to 10)  默认的分区数是cpu的核数

2、makeRDD创建

  def makeRDD[T](seq: Seq[T], numSlices: Int = defaultParallelism)(implicit arg0: ClassTag[T]): RDD[T]

var rdd = sc.makeRDD(1 to 10)

二、从外部存储创建RDD

var rdd:RDD[String] = sc.textFile("file:///D:/sparkdata.txt"1)

var rdd:RDD[String] = sc.textFile("/sparkdata.txt"1)  从hdfs


RDD的基本操作

操作类型

函数名

作用

转化操作

map()

参数是函数,函数应用于RDD每一个元素,返回值是新的RDD

flatMap()

参数是函数,函数应用于RDD每一个元素,将元素数据进行拆分,变成迭代器,返回值是新的RDD

filter()

参数是函数,函数会过滤掉不符合条件的元素,返回值是新的RDD

distinct()

没有参数,将RDD里的元素进行去重操作

union()

参数是RDD,生成包含两个RDD所有元素的新RDD

intersection()

参数是RDD,求出两个RDD的共同元素

subtract()

参数是RDD,将原RDD里和参数RDD里相同的元素去掉

cartesian()

参数是RDD,求两个RDD的笛卡儿积

行动操作

collect()

返回RDD所有元素

count()

RDD里元素个数

countByValue()

各元素在RDD中出现次数

reduce()

并行整合所有RDD数据,例如求和操作

fold(0)(func)

和reduce功能一样,不过fold带有初始值

aggregate(0)(seqOp,combop)

和reduce功能一样,但是返回的RDD数据类型和原RDD不一样

foreach(func)

对RDD每个元素都是使用特定函数

1、map操作

数据集中的每个元素经过用户自定义的函数转换形成一个新的RDD,新的RDD叫MappedRDD

rdd.map(_*2)

2、flatMap(func)操作

对每个元素都可以映射为0个或者多个输出

3、.mapPartitions(func):类似与map,map作用于每个分区的每个元素,但mapPartitions作用于每个分区

4、union(ortherDataset):将两个RDD中的数据集进行合并,最终返回两个RDD的并集,若RDD中存在相同的元素也不会去重

5、intersection(otherDataset):返回两个RDD的交集

6、distinct([numTasks]):对RDD中的元素进行去重

7、cartesian(otherDataset):对两个RDD中的所有元素进行笛卡尔积操作

8、coalesce(numPartitions,shuffle):对RDD的分区进行重新分区,shuffle默认值为false,当shuffle=false时,不能增加分区数


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值