spark教程(五)-action 操作 group 系列
时间:2019-10-18
本文章向大家介绍spark教程(五)-action 操作 group 系列,主要包括spark教程(五)-action 操作 group 系列使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
groupBy(f, numPartitions=None, partitionFunc=<function portable_hash>):根据 条件 分组,这个条件是一个函数;输出 (key,迭代器)
## 条件是分组依据,条件不影响最后的输出格式,输出格式仍和原数据相同 ## 如 原来是 [1, 2],经过分组后分到了 第 1 组,输出是 [1, [1, 2]], [1, 2] 完全保留 # 这个例子相当于求 奇偶数 rdd = sc.parallelize([1, 1, 2, 3, 5, 8]) result = rdd.groupBy(lambda x: x % 2).collect() # [(0, <pyspark.resultiterable.ResultIterable object at 0x7f2f76096890>), # (1, <pyspark.resultiterable.ResultIterable object at 0x7f2f760965d0>)] # 解析迭代器并排序 sorted([(x, sorted(y)) for (x, y) in result]) # [(0, [2, 8]), (1, [1, 1, 3, 5])]
groupByKey(numPartitions=None, partitionFunc=<function portable_hash>):按 key 进行分组;输出 (key,迭代器)
rdd = sc.parallelize([("a", 1), ("b", 1), ("a", 3)]) rdd.groupByKey().collect() # [('a', <pyspark.resultiterable.ResultIterable object at 0x7f2f760a5a90>), # ('b', <pyspark.resultiterable.ResultIterable object at 0x7f2f760a5b10>)] rdd.groupByKey().mapValues(len).collect() # [('a', 2), ('b', 1)] sorted(rdd.groupByKey().mapValues(list).collect()) # [('a', [1, 3]), ('b', [1])] 把迭代器转成 list
groupWith(other, *others):把多个 RDD 的 key 进行分组;输出 (key,迭代器)
分组后的数据是有顺序的,每个 key 对应的 value 是按 原本 RDD 的顺序的,如果原本 RDD 没有这个 key,留空
w = sc.parallelize([("a", 5), ("b", 6)]) x = sc.parallelize([("a", 1), ("b", 4)]) y = sc.parallelize([("a", 2)]) z = sc.parallelize([("b", 42)]) w.groupWith(x, y, z).collect() [(x, tuple(map(list, y))) for x, y in list(w.groupWith(x, y, z).collect())] # [('a', ([5], [1], [2], [])), ('b', ([6], [4], [], [42]))]
未完待续...
原文地址:https://www.cnblogs.com/yanshw/p/11655598.html
- go语言的sql包原理与用法分析
- WordPress免插件生成完整站点地图(sitemap.xml)的php代码
- Go语言常用字符串处理方法实例汇总
- 硬盘故障时如何强制关机:Input/output error
- 举例讲解Go语言中函数的闭包使用
- 实现WordPress提交评论的时删除该页面的WP-Super-Cache缓存的方法
- php自动生成百度开放适配PC页-手机页pattern对应关系sitemap.xml
- Linux系统最大文件打开数优化,解决Too many open files报错
- 【Dev Club 分享】安卓单元测试:What, Why and How
- WordPress记住评论用户信息的js版本,直接操作cookie无视缓存
- 禁止百度转码和百度快照缓存的META声明
- 单机MySQL数据库优化推荐的编译安装参数
- Linux网络实时流量监测工具iftop的安装使用
- Golang学习--GroupCache的使用
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 用Canvas画一个刮刮乐
- WebSocket三问—腾讯三问
- BroadcastReceiver三问—美团真题
- 小程序调用拍照功能
- Jetpack中可能被你忽视的—行为组件简析
- pytest封神之路第零步 快速入门
- beego(一) beego 入门
- javascript预编译(执行期的上下文)
- Elasticsearch评分相关度算法解析
- Netty入门教程——认识Netty
- Linux下的包过滤软件:iptables剖析
- rxjs fromEvent的实现
- rxjs switchMap的实现原理
- rxjs里scan operator的执行研究
- rxjs pipe和map组合的一个实际例子的单步调试