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,
mergCombiners,
partitioner)
mapValues(func) 对pair RDD中的每个值应用一个函数而不改变键
flatMapValues(func) 对pair RDD中的每个值应用一个返回迭代器的函数,
然后对返回的每个元素都生成一个对应原键的键值对记录。
通常用于符号化。
keys() 返回一个仅包含键的RDD
values() 返回一个仅包含值的RDD
sortByKey() 返回一个根据键排序的RDD
4. 针对两个pair RDD转化操作
subtractByKey 删掉RDD中键与other RDD中的键相同的元素
join 对两个RDD进行内连接
rightOuterJoin 对两个RDD进行连接操作,确保第一个RDD的键必须存在(右外连接)
leftOuterJoin 对两个RDD进行连接操作,确保第二个RDD的键必须存在(左外连接)
cogroup 将两个RDD中拥有相同键的数据分组到一起
5. pair RDD的行动操作
countByKey() 对每个键对应的元素分别计数
collectAsMap() 将结果以映射表的形式返回,以便查询
lookup(key) 返回给定键对应的所有值
6. 数据分区
控制数据分布以获得最少的网络传输可以极大地提升整体性能。
只有当数据集多次在诸如连这种基于键的操作中使用时,分区才有帮助。
Scala自定义分区方式
val sc = new SparkContext(...)
val userData = sc.sequenceFile(UserID,UserInfo)("hdfs://...")
.partitionBy(new HashPartitioner(100))
.persist()
Spark学习之键值对(pair RDD)操作(3)的更多相关文章
- Spark学习之键值对操作总结
键值对 RDD 是 Spark 中许多操作所需要的常见数据类型.键值对 RDD 通常用来进行聚合计算.我们一般要先通过一些初始 ETL(抽取.转化.装载)操作来将数据转化为键值对形式.键值对 RDD ...
- Spark学习笔记——键值对操作
键值对 RDD是 Spark 中许多操作所需要的常见数据类型 键值对 RDD 通常用来进行聚合计算.我们一般要先通过一些初始 ETL(抽取.转化.装载)操作来将数据转化为键值对形式. Spark 为包 ...
- Spark中的键值对操作-scala
1.PairRDD介绍 Spark为包含键值对类型的RDD提供了一些专有的操作.这些RDD被称为PairRDD.PairRDD提供了并行操作各个键或跨节点重新进行数据分组的操作接口.例如,Pa ...
- Spark中的键值对操作
1.PairRDD介绍 Spark为包含键值对类型的RDD提供了一些专有的操作.这些RDD被称为PairRDD.PairRDD提供了并行操作各个键或跨节点重新进行数据分组的操作接口.例如,Pa ...
- Spark基础脚本入门实践3:Pair RDD开发
Pair RDD转化操作 val rdd = sc.parallelize(List((1,2),(3,4),(3,6))) //reduceByKey,通过key来做合并val r1 = rdd.r ...
- Spark学习之路(四)—— RDD常用算子详解
一.Transformation spark常用的Transformation算子如下表: Transformation算子 Meaning(含义) map(func) 对原RDD中每个元素运用 fu ...
- spark学习(六)Java版RDD基本的基本操作
1.map算子 private static void map() { //创建SparkConf SparkConf conf = new SparkConf() .setAppName(" ...
- Spark 键值对RDD操作
键值对的RDD操作与基本RDD操作一样,只是操作的元素由基本类型改为二元组. 概述 键值对RDD是Spark操作中最常用的RDD,它是很多程序的构成要素,因为他们提供了并行操作各个键或跨界点重新进行数 ...
- Spark学习笔记3:键值对操作
键值对RDD通常用来进行聚合计算,Spark为包含键值对类型的RDD提供了一些专有的操作.这些RDD被称为pair RDD.pair RDD提供了并行操作各个键或跨节点重新进行数据分组的操作接口. S ...
随机推荐
- 基于Wi-Fi的HID注射器,利用WHID攻击实验
WHID代表基于 Wi-Fi 的 HID 注射器,即对 HID 攻击进行无线化攻击的一种注入工具. 实验攻击原理如下图: 攻击者使用ESP8266作为AP,在自己的电脑创建客户端连接AP.在客户端键入 ...
- 【CV论文阅读】Image Captioning 总结
初次接触Captioning的问题,第一印象就是Andrej Karpathy好聪明.主要从他的两篇文章开始入门,<Deep Fragment Embeddings for Bidirectio ...
- js程序基础字符串具体
1. .charAt()里面写数字 在一般浏览器上相当于方括号 可是由于IE6的存在他就有了用处 由于IE6不兼容方括号 2. charCodeAt() 和charAt几乎相 ...
- samba add new smbpasswd & recycle
建立新账号(XXXXX)的范列: sudo useradd XXXXX -m #建立本机用户且home下建文件夹 sudo smbpasswd XXXXX -a #建立samba用戶且设定密码 ...
- [React] Prevent Unnecessary Rerenders of Compound Components using React Context
Due to the way that React Context Providers work, our current implementation re-renders all our comp ...
- [React] Preview and edit a component live with React Live
In this lesson we'll use React Live to preview and edit a component directly in the browser. React L ...
- firebug的应用
firebug再前端调试中起到了非常好的作用能看到DOM的性能,以及检測.比方运用console.log()就是要比alert():好一些这样增强的页面的连续性而且console.warn()和con ...
- 【bzoj4597】 [Shoi2016]随机序列
可以发现加减号之间可以互相抵消. 真正加到答案里的只有一些前缀积. 记s[i]为a[1]*a[2]*a[3]...*a[i].那s[i]在答案中出现的次数就是2*3^(n-i-1); 修改一个数只会对 ...
- createTextNode和innerHTML什么区别
今天写代码,用到createTextNode,发现好像功能和innerHTML是一样的,于是查阅了网上的资料了. 一.createTextNode 例如: var element = document ...
- how to modify vs2017
https://docs.microsoft.com/en-us/visualstudio/install/modify-visual-studio 直接用everything搜索vs_install ...