文档章节

说下spark中的transform和action

无精疯
 无精疯
发布于 04/17 10:48
字数 813
阅读 185
收藏 0

1,transformation是得到一个新的RDD,方式很多,比如从数据源生成一个新的RDD,从RDD生成一个新的RDD

2,action是得到一个值,或者一个结果(直接将RDD cache到内存中)

所有的transformation都是采用的懒策略,就是如果只是将transformation提交是不会执行计算的,计算只有在action被提交的时候才被触发。
 

 

transformation常见操作:

1. map(func):对调用map的RDD数据集中的每个element都使用func,然后返回一个新的RDD,这个返回的数据集是分布式的数据集
2. filter(func) : 对调用filter的RDD数据集中的每个元素都使用func,然后返回一个包含使func为true的元素构成的RDD
3. flatMap(func):和map差不多,但是flatMap生成的是多个结果
4. mapPartitions(func):和map很像,但是map是每个element,而mapPartitions是每个partition
5. mapPartitionsWithSplit(func):和mapPartitions很像,但是func作用的是其中一个split上,所以func中应该有index
6. sample(withReplacement,faction,seed):抽样
7. union(otherDataset):返回一个新的dataset,包含源dataset和给定dataset的元素的集合
8. distinct([numTasks]):返回一个新的dataset,这个dataset含有的是源dataset中的distinct的element
9. groupByKey(numTasks):返回(K,Seq[V]),也就是hadoop中reduce函数接受的key-valuelist
10. reduceByKey(func,[numTasks]):就是用一个给定的reduce func再作用在groupByKey产生的(K,Seq[V]),比如求和,求平均数
11. sortByKey([ascending],[numTasks]):按照key来进行排序,是升序还是降序,ascending是boolean类型
12. join(otherDataset,[numTasks]):当有两个KV的dataset(K,V)和(K,W),返回的是(K,(V,W))的dataset,numTasks为并发的任务数
13. cogroup(otherDataset,[numTasks]):当有两个KV的dataset(K,V)和(K,W),返回的是(K,Seq[V],Seq[W])的dataset,numTasks为并发的任务数
14. cartesian(otherDataset):笛卡尔积就是m*n,大家懂的

 

action常见操作:

1. reduce(func):说白了就是聚集,但是传入的函数是两个参数输入返回一个值,这个函数必须是满足交换律和结合律的
2. collect():一般在filter或者足够小的结果的时候,再用collect封装返回一个数组
3. count():返回的是dataset中的element的个数
4. first():返回的是dataset中的第一个元素
5. take(n):返回前n个elements,这个士driver program返回的
6. takeSample(withReplacement,num,seed):抽样返回一个dataset中的num个元素,随机种子seed
7. saveAsTextFile(path):把dataset写到一个text file中,或者hdfs,或者hdfs支持的文件系统中,spark把每条记录都转换为一行记录,然后写到file中
8. saveAsSequenceFile(path):只能用在key-value对上,然后生成SequenceFile写到本地或者hadoop文件系统
9. countByKey():返回的是key对应的个数的一个map,作用于一个RDD
10. foreach(func):对dataset中的每个元素都使用func

 

© 著作权归作者所有

无精疯
粉丝 94
博文 287
码字总数 117305
作品 0
浦东
程序员
私信 提问
『 Spark 』3. spark 编程模式

写在前面 本系列是综合了自己在学习spark过程中的理解记录 + 对参考文章中的一些理解 + 个人实践spark过程中的一些心得而来。写这样一个系列仅仅是为了梳理个人学习spark的笔记记录,所以一...

董黎明
2018/06/11
42
0
Comprehensive Introduction to Apache Spark

Introduction Industry estimates that we are creating more than 2.5 Quintillion bytes of data every year. Think of it for a moment – 1 Qunitillion = 1 Million Billion! Can you i......

grasp_D
2018/06/15
12
0
Spark累加器(Accumulator)使用详解

     第一个参数应是数值类型,是累加器的初始值,第二个参数是该累加器的命字,这样就会在spark web ui中显示,可以帮助你了解程序运行的情况。   下面看行累加器具体的例子:    ...

zhaojianting
2018/05/07
0
0
Spark 核心概念RDD的另类解读 - 知乎

1 Spark的RDD 提到Spark必说RDD,RDD是Spark的核心,如果没有对RDD的深入理解,是很难写好spark程序的,但是网上对RDD的解释一般都属于人云亦云、鹦鹉学舌,基本都没有加入自己的理解。本文基...

数据浪尖
10/21
0
0
基于 Spark 的数据分析实践

转载本文需注明出处:微信公众号EAWorld,违者必究。 引言: Spark是在借鉴了MapReduce之上发展而来的,继承了其分布式并行计算的优点并改进了MapReduce明显的缺陷。Spark主要包含了Spark C...

EAWorld
06/19
61
0

没有更多内容

加载失败,请刷新页面

加载更多

Kafka实战(五) - 核心API及适用场景全面解析

1 四个核心API ● Producer API 允许一个应用程序发布一串流式的数据到一个或者多个Kafka topic。 ● Consumer API 允许一个应用程序订阅一个或多个topic ,并且对发布给他们的流式数据进行处...

JavaEdge
19分钟前
5
0
实现线程的第三种方式——Callable & Future

Callable Runnable 封装一个异步运行的任务, 可以把它想象成为一个没有参数和返回值的异步方 法。Callable 与 Runnable 类似, 但是有返回值。Callable 接口是一个参数化的类型, 只有一 个...

ytuan996
今天
8
0
OSChina 周六乱弹 —— 不要摁F了!

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @巴拉迪维 : 朴树写的词曲都给人一种莫名的失落感,不过这首歌他自己却没有唱,换成赵传这种高音阶嘶喊的确很好,低沉但却有力,老男人的呐喊...

小小编辑
今天
10
0
Android Binder机制 - interface_cast和asBinder讲解

研究Android底层代码时,尤其是Binder跨进程通信时,经常会发现interface_cast和asBinder,很容易被这两个函数绕晕,下面来讲解一下: interface_cast 下面根据下述ICameraClient例子进行分析...

天王盖地虎626
昨天
12
0
计算机实现原理专题--存储器的实现(二)

计算机实现原理专题--存储器的实现(一)中描述了一种可以记住输入端变化的装置。现需要对其功能进行扩充,我们将上面的开关定义为置位,下面的开关定义为复位,然后需要增加一个保持位,当保...

FAT_mt
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部