Spark学习之RDD编程(2)
Spark学习之RDD编程(2)
1. Spark中的RDD是一个不可变的分布式对象集合。
2. 在Spark中数据的操作不外乎创建RDD、转化已有的RDD以及调用RDD操作进行求值。
3. 创建RDD:1)读取一个外部数据集2)在驱动器程序里分发驱动器程序中的对象集合。
4. RDD支持的操作:
1)转换操作,由一个RDD生成一个新的RDD。 2)行动操作,对RDD进行计算结果,并把结果返回到驱动器程序中,或者把结果存储到外部存储系统(如HDFS)。
5. Spark程序或者shell会话都会按如下方式工作:
1)从外部数据创建出输入RDD。 2)使用诸如filter()这样的转化操作对RDD进行转化,以定义一个新的RDD。 3)告诉Spark对需要被重用的中间结果RDD执行persist()操作。 4)使用行动操作 (例如count()和first()等)来触发一次并行计算,Spark会对计算进行优化后在执行。
6. 创建RDD
快速创建RDD,把程序中一个已有的集合传给SparkContext的parallelize()方法,不过这种方法除了开发原型和测试时,这种方式用的并不多。 Python中的parallelize()方法
lines = sc.parallelize(["pandas","i like pandas"])
Scala中的parallelize()方法
val lines = sc.parallelize(List("pandas","i like pandas"))
Java中的parallelize()方法
JavaRDD<String> lines = sc.parallelize(Arrays.asList("pandas","i like pandas"))
7. 惰性求值
RDD的转化操作都是惰性求值的。
8. 向Spark传递函数
8.1 Python 传递比较短的函数,使用lambda表达式来传递;也可以传递顶层函数或是定义的局部函数。 8.2 Scala,可以定义的内联函数、方法的引用或静态方法传递给Spark,就行Scala的其他函数式API一样。 8.3 Java,函数需要作为实现了Spark的org.apache.spark.api.java.function包中的任一函数接口的对象来传递。
9. 常见的转化操作和行动操作
9.1 针对个元素的转化操作 flatmap() 对每个输入元素生成多个输出元素。 map() 接受一个函数,把这个函数用于RDD中的每个元素,将函数的返回结果作为结果RDD中的对应元素的。返回的类型不必和输入类型相同。 filter() 接受一个函数,并将RDD中满足该函数的元素放入新RDD中返回。 distinct() 去重 sample(withReplacement,fraction,[seed]) 对RDD采样,以及是否替换 9.2 伪集合操作 合并和相交要求RDD数据类型相同。 (不需混洗)union() 生成一个包含两个RDD中所有元素的RDD (需要混洗)intersection() 求两个RDD共同的元素的RDD (需要混洗)subtract() 移除一个RDD中的内容 (需要混洗)cartesian)() 与另一个RDD的笛卡尔积

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Spark学习之基础相关组件(1)
Spark学习之基础相关组件(1) 1. Spark是一个用来实现快速而通用的集群计算的平台。 2. Spark的一个主要特点是能够在内存中进行计算,因而更快。 3. RDD(resilient distributed dataset弹性分布式数据集)表示分布在多个计算节点上可以并行操作的元素的集合,是Spark的主要编程抽象。 4. Spark是一个大一统的软件栈: 4.1 Spark core实现了Spark的基本功能,包括任务调度、内存管理、错误恢复、与存储系统交互等模块。Spark Core中还包含了对弹性分布式数据集的API定义。 4.2 Spark Streaming是Spark提供的对实时数据进行流式计算的组件。 4.3 Mlib机器学习(ML),提供了很多的机器学习算法,包括分类、回归、聚类、协同过滤等,还包括模型评估、数据导入等额外支持功能。 4.4 Graph是用来操作图的程序库,可以进行并行的图计算。 4.5 集群管理器(cluster manager),包括自带的独立调度器,还有支持Hadoop YARN、Apache Mesos。 5. Spark的存储层,包...
- 下一篇
Spark学习之键值对(pair RDD)操作(3)
Spark学习之键值对(pair RDD)操作(3) 1. 我们通常从一个RDD中提取某些字段(如代表事件时间、用户ID或者其他标识符的字段),并使用这些字段为pair RDD操作中的键。 2. 创建pair RDD 1)读取本身就是键值对的数据 2)一个普通的RDD通过map()转为pair RDD,传递的函数需要返回键值对。 Python中使用第一个单词作为键创建出一个pair RDD pairs = lines.amp(lambda x: (x.split(" ")[0],x)) Scala中使用第一个单词作为键创建出一个pair RDD val pairs = lines.map(x=>(x.split(" ")(0),x)) 3. pair RDD的转化操作 pair RDD可以使用所有标准RDD上的可能的转化操作,还有其他如下 reduceBykey(func) 合并具有相同键的值 groupByke() 对具有相同键的值进行分组 combineByKey( 使用不同的的返回类型合并具有相同键的值 createCombiner, mergeValue, mergCom...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7安装Docker,走上虚拟化容器引擎之路
- MySQL8.0.19开启GTID主从同步CentOS8
- Red5直播服务器,属于Java语言的直播服务器
- Mario游戏-低调大师作品
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池