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 ...
随机推荐
- linux 硬件中断调节
什么是中断 中断interrupts是指硬件主动的来告诉CPU去做某些事情.比如网卡收到数据后可能主动的告诉CPU来处理自己接受到的数据,键盘有了按键输入后会主动告知CPU来读取输入. 硬件主动的打扰 ...
- Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)
原文:https://my.oschina.net/xshuai/blog/917097 摘要: Nginx+Keepalived搭建高可用负载均衡环境(HA) http://blog.csdn.ne ...
- C# 如何修改Form不能修改窗体大小
把窗体的FormBorderSytle改一下就可以了,改成FixedSingle或者Fixed3D都可以
- openstack-glance-api.service start request repeated too quickly, refusing to start
问题描写叙述 openstack J版 centos7部署 重新启动服务时起不来,日志也不报错.以glance服务为例,例如以下: # systemctl start openstack-glance ...
- mysql查看所有存储过程,函数,视图,触发器,表
查询数据库中的存储过程和函数 方法一: select `name` from mysql.proc where db = 'your_db_name' and `type` = 'PROCEDURE' ...
- C++入门学习——模板
为什么须要模板? 我们已经学过重载(Overloading),对重载函数而言,C++ 通过函数參数(參数个数.參数类型)的正确匹配来调用重载函数.比如.为求两个数的最大值,我们定义 max () 函数 ...
- 【Swift】学习笔记(二)——基本运算符
运算符是编程中用得最多的,其包含一元,二元和三元 三种运算符.swift也和其他编程语言一样基本就那些,以下总结一下,也有它特有的运算符.比方区间运算符 1.一元运算符 = 赋值运算符,用得最多的 ...
- JSON入门指南
JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,很适合于server与 JavaScript 的交互.本文将高速解说 JSON 格式.并通过代码演示样 ...
- ibatis 取消查询动态列的缓存
ibatis在查询结果列不确定(或是动态变化)的情况下,会因为列缓存的原因导致变化后的列数据查不出来 解决方法是: select标签有个属性remapResults,该属性默认值为false,设置成r ...
- busybox的使用
1 将busybox设置为静态链接,放在文件系统中使用 make menuconfig的时候,Busybox Settings --> Build Options --> Build Bu ...