Spark scala 操作
时间:2022-07-22
本文章向大家介绍Spark scala 操作,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
基本操作
- 创建RDD
var data = Array(1,2,3,4) //数组
var distData = sc.parallelize(data,3) //创建RDD
distData.collect //收集展示
distData.take(1) //取出第一行/数组中一个数据占一行
2.读取文件数据
var distFile = sc.textFile("data.txt")//按行读
distFile.take(1) //取出一行数据
//也可以同时读取多个文件,相当于多个文件拼接
//读取整个目录下的所有文件
//读取含有通配符的目录
textFile("/input/*.txt")
3.map操作,指定一个函数产生新的RDD,元素直接是一对一的关系。
var rdd1 = sc.parallelize(1 to 9,3)
var rdd2 = rdd1.map(x=>x*2)
rdd2.collect
res1: Array[Int] = Array(2, 4, 6, 8, 10, 12, 14, 16, 18)
4.filter对RDD进行过滤,返回过滤后的RDD
var rdd3 = rdd2.filter(x=>x>10)
rdd3.collect
res5: Array[Int] = Array(12, 14, 16, 18)
5.flatmap是一个一对多的map
var rdd4 = rdd3.flatMap(x=>x to 20)
rdd4: org.apache.spark.rdd.RDD[Int] = MapPartitionsRDD[6] at flatMap at <console>:30
scala> rdd4.collect
res6: Array[Int] = Array(12, 13, 14, 15, 16, 17, 18, 19, 20, 14, 15, 16, 17, 18, 19, 20, 16, 17, 18, 19, 20, 18, 19, 20)
6.sample产生随机数组
var a = sc.parallelize(1 to 1000,3)
a.sample(false,0.1,0)
a.sample(false,0.1,0).count()
第一个参数是是否放回抽样,比例,随机种子
7.交集与并集
rdd1.union(rdd2)
rdd1.intersection(rdd2)
8.去重
distinct
9.分组groupbykey
val rdd0 = sc.parallelize(Array((1,1),(1,2),(2,3)))
val rdd11 = rdd0.groupByKey()
rdd11.collect
10.reduceByKey
是数据分组聚合操作,在一个key的数据集上使用
val rdd0 = sc.parallelize(Array((1,1),(1,2),(2,3),(2,1),(2,2),(2,3),3))
var rd,d = rdd0.reduceByKey((x,y)=>x+y)
rdd.collect
(1,6)(2,6)
11.combineByKey数据集合并
val data = Array((1,1.0),(1,2.0),(1,3.0),(2,4.0))
- AngularJS 中的Promise --- $q服务详解
- Ruby编程实践
- Ruby测试小代码[计算50以内的素数]
- 出租车、巴士、单车、AI全入局 首汽约车着力搭建出行生态圈
- 如何运行ruby代码
- 图解NodeJS【基于事件、回调的单线程高性能服务器】原理
- CListBox
- 如何在Eclipse中添加Tomcat的jar包
- c++---函数
- Ruby对象模型总结
- Elasticsearch 管理文档
- Elasticsearch聚合 之 Ip Range IP地址范围聚合
- Elasticsearch聚合 之 DateRange日期范围聚合
- 域名投资大佬Mike Mann以约19.5万美金出售加密货币相关域名
- 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 数组属性和方法
- 反 996 有理:催程序员交代码,写不出好软件
- 一千个不用 Null 的理由!
- WebAssembly 是 Deno 的好搭档
- Chrome开发者工具的11个高级使用技巧
- 怒爬某破Hub站资源,简单4步撸个鉴黄平台!
- 审阅“史上”最烂的代码
- BeanUtils 是用 Spring 的还是 Apache 的好?
- 一看就会的mysql索引优化(真实案例)
- 【015期】JavaSE面试题(十五):网络IO流
- 算法篇:二分查找基础篇
- 算法篇:双指针之接雨水
- 因用了Insert into select语句,美女同事被开除了!
- 【原创】Java并发编程系列33 | 深入理解线程池(上)
- 算法篇:二分法之k个数之和
- 记一次循环依赖踩坑