Spark 基础——RDD 算子
RDD弹性分布式数据集(Resilient Distributed Dataset)是 Spark 最基本也是最根本的数据抽象
RDD 它具备像 MapReduce 等数据流模型的容错性(fault-tolerant),
为了实现容错,RDD 提供了一种高度受限的共享内存,即 RDD 是只读的,并且只能通过其他 RDD 上的批量操作来创建。
它允许开发者在大型集群上执行基于内存的计算
1. 常用算子
算子指的是 RDD 下的成员函数;
transformation 型算子
- reduceByKey
- flatMap
val chars = sc.parallelize(Array("a b c", "d e f", "h i j")) chars.flatMap(_.split('')).collect// Array[String] = Array(a, b, c, d, e, f, h, i, j)
- join
val rdd1 = sc.parallelize(List(("tom", 1), ("jerry", 3), ("kitty", 2))) val rdd2 = sc.parallelize(List(("jerry", 2), ("tom", 1), ("shuke", 2))) (rdd1 join rdd2).collect// Array((tom,(1,1)), (jerry,(3,2)))
- reduceByKey vs. groupByKey
val unionRdd = rdd1 union rdd2 // groupByKey 的返回值 unionRdd.groupByKey().collect// Array((shuke,CompactBuffer(2)), (tom,CompactBuffer(1, 1)), (kitty,CompactBuffer(2)), (jerry,CompactBuffer(3, 2))) unionRdd.groupByKey().mapValues(_.sum).collect// Array[(String, Int)] = Array((shuke,2), (tom,2), (kitty,2), (jerry,5)) unionRdd.reduceByKey(_+_).collect// Array[(String, Int)] = Array((shuke,2), (tom,2), (kitty,2), (jerry,5))
- cogroup 与 groupByKey
val rdd6 = sc.parallelize(List(("jerry", 2), ("tom", 1), ("shuke", 2))) val rdd7 = sc.parallelize(List(("jerry", 2), ("tom", 1), ("tom", 3), ("shuke", 2))) rdd7.cogroup(rdd6).collect// Array((tom,(CompactBuffer(1, 3),CompactBuffer(1))), (jerry,(CompactBuffer(2),CompactBuffer(2))), (shuke,(CompactBuffer(2),CompactBuffer(2))))
action 型算子
- reduce
2. 辨异
- transformation 型的 map 算子与 action 型的 foreach 算子:
- 都是遍历;
- map 算子有返回值(new MapPartitionsRDD),foreach 算子无返回值;
- foreach 比如应用于:
- println:rdd.foreach(println)
- 数据库交互;
Spark 基础——RDD 算子相关推荐
- spark常用RDD算子 汇总(java和scala版本)
github: https://github.com/zhaikaishun/spark_tutorial spark RDD的算子挺多,有时候如何灵活的使用,该如何用一下子想不起来,这一段时间将s ...
- Spark 基础 —— RDD(一)
1. Spark 为 RDD 提供的成员函数 .stats():包括(count:计数,mean:均值,stdev:标准差,max:最大,min:最小值) countByValue:执行统计计数 根据 ...
- Spark常用RDD算子 - saveAsTextFile、saveAsObjectFile 可保存到本地文件或hdfs系统中
saveAsTextFile 函数原型 def saveAsTextFile(path: String): Unit def saveAsTextFile(path: String, codec: C ...
- Spark 基础 —— RDD(创建 RDD)的两种方式
弹性分布式数据集(Resilient Distributed Dataset),简称 RDD,RDD 是 Spark 所提供的最基本的数据抽象,代表分布在集群中多台机器上的对象集合.Spark 有两种 ...
- spark常用RDD算子 - take(),takeOrdered(),top(),first()
take(),takeOrdered(),top() 返回一个列表,first()返回一个值 take def take(num: Int): Array[T] take用于获取RDD中从0到num- ...
- Spark框架——RDD算子mapPartitions迭代器(基于Scala语言)
/*mapPartitions 和map算子是一样的,只不过map是针对每一条数据进行转换,mapPartitions 针对一整个分区的数据进行转换 1.map的func的参数是单条数据,mapPar ...
- 学习笔记Spark(四)—— Spark编程基础(创建RDD、RDD算子、文件读取与存储)
文章目录 一.创建RDD 1.1.启动Spark shell 1.2.创建RDD 1.2.1.从集合中创建RDD 1.2.2.从外部存储中创建RDD 任务1: 二.RDD算子 2.1.map与flat ...
- Spark基础学习笔记17:掌握RDD算子
文章目录 零.本讲学习目标 一.RDD算子 二.准备工作 (一)准备文件 1.准备本地系统文件 2.准备HDFS系统文件 (二)启动Spark Shell 1.启动HDFS服务 2.启动Spark服务 ...
- Spark RDD算子介绍
Spark学习笔记总结 01. Spark基础 1. 介绍 Spark可以用于批处理.交互式查询(Spark SQL).实时流处理(Spark Streaming).机器学习(Spark MLlib) ...
最新文章
- 你知道Unity IoC Container是如何创建对象的吗?
- html 书架样式css,CSS3 响应式书架布局
- Openssl和PKCS#11的故事
- JSON学习笔记(二)- 对象
- celery4不支持djcelery
- mysql 导入dbm文件_DBM数据导入到mysql数据库方法
- 国科大prml--SVM
- Linux系统下搭建BUG管理系统---禅道
- mysql结果行数_取得数据库结果集中的行数
- 五分钟快速过完Verilog HDL基本概念(3)语法讲解
- 挑选了适合测试边界的汉字及截图
- 论坛mysql表设计_网站论坛如何制作—简单论坛数据库的设计与操作
- 恶意软件清理助手V2.6.3 build 005 2007-07-05
- 计算机网络面试题汇总
- 领导力学习笔记(1118 周一)
- 如何将多个域名指向一个网址
- Qt下载安装教程,windows10亲测可用,版本5.12.11
- 如何利用语音评测技术设计英语口语选择题
- 一文读懂APS系统的核心算法和数学理论
- 在线预览 Word、Excel、PowerPoint 文档——Office Online插件使用
热门文章
- 微服务笔记(一) 搭建服务治理中心
- Bug:No mapping for GET /onepill//swagger-ui.html
- linux端口扫描脚本ip段,shell脚本结合iptables防端口扫描的实现
- el-form 动态校验规则_动态多线程敏感信息泄露检测工具
- 剑指offer面试题38. 字符串的排列(回溯)
- Numpy知识点:np.expand_dims()np.argmax()
- 关于如何打开一张jpg图片文件并存放到vector unsigned char中的讨论
- php高强度精密涂覆钢管,电力内外涂覆钢管
- 去除地址栏带#的问题
- Java学习笔记 06 数字格式化及数学运算