1、Map函数:通过函数传递源的每个元素,并形成新的分布式数据集。

%spark
#并行化集合生成RDD
var data = sc.parallelize(List(10,20,30))
%输出结果
data.collect
%应用map函数并传递表达式
var mapFunc = data.map(x => x+10)
mapFunc.collect
输出:Array[Int] = Array(20, 30, 40)

flatMap: 原RDD中的每一个元素,对应于新RDD里面的一个迭代器。案例 : 将RDD的每个字符串按照逗号进行分割,输出结果。

val flatMapRdd = dataRdd.flatMap(str => str.split(","))

2、Filter函数:返回一个新数据集,该数据集是通过选择函数返回true的源元素而形成的。因此,它仅检索满足给定条件的元素。

#过滤掉35
%spark
var data = sc.parallelize(List(10,20,35,40))
var filterFunc = data.filter(x => x!=35)
filterFunc.collect 输出:Array[Int] = Array(10, 20, 40)

3、count函数:返回数据集中存在的元素个数

%spark
var data = sc.parallelize(List(1,2,3,4,5))
var countFunc = data.count() 输出:5

4、Distinct函数:返回提供的数据集中的不同元素。

%spark
var data = sc.parallelize(List(10,10,20,30,40))
var distFunc = data.distinct()
distFunc.collect

5、Union函数:返回一个新数据集,其中包含不同数据集中存在的元素组合。

%spark
var data1 = sc.parallelize(List(10,20))
var data2 = sc.parallelize(List(30,40))
var unionFunc = data1.union(data2)
unionFunc.collect 输出:Array[Int] = Array(10, 20, 30, 40)

6、Intersection函数:返回一个新数据集,其中包含不同数据集中存在的元素的交集

%spark
var data1 = sc.parallelize(List(10,20,30))
var data2 = sc.parallelize(List(30,40))
var IntersectionFunc = data1.intersection(data2)
IntersectionFunc.collect 输出:Array(30)

7、Cartesian函数:生成两个数据集的笛卡尔积,并返回所有可能的对组合。一个数据集的每个元素与另一个数据集的每个元素配对。

%spark
var data1 = sc.parallelize(List(1,2,3))
var data2 = sc.parallelize(List(3,4,5))
var cartesianfunc = data1.cartesian(data2)
cartesianfunc.collect 输出:Array[(Int, Int)] = Array((1,3), (1,4), (1,5), (2,3), (3,3), (2,4), (2,5), (3,4), (3,5))

8、sortByKey函数:维护元素的顺序。它接收键值对(K,V)作为输入,按升序或降序对元素进行排序,并按顺序生成数据集。

%spark
var data = sc.parallelize(Seq(("C",3),("B",2),("D",4),("A",1),("E",5)))
data.collect
#sortByKey默认传入的参数是true,升序的
var sortFun = data.sortByKey(false)
sortFun.collect 输出:Array[(String, Int)] = Array((E,5), (D,4), (C,3), (B,2), (A,1))

9、groupByKey函数:是一种聚合操作,输入(k,value),根据k值进行分类

%spark
var data = sc.parallelize(Seq(("C",3),("C",3),("C",2),("D",4),("A",1),("E",5)))
data.collect
var groupFunc = data.groupByKey()
groupFunc.collect 输出:Array[(String, Iterable[Int])] = Array((D,CompactBuffer(4)), (A,CompactBuffer(1)), (E,CompactBuffer(5)), (C,CompactBuffer(3, 3, 2)))

10、reduceByKey函数:类似于的groupByKey聚合函数,但groupByKey中包含大量shuffle操作,而reduceByKey则能提升性能,因为它不必发送pairRDD中的所有元素,会使用本地合并器先在本地完成基本的聚合操作(先在本地根据key值合并value),然后发送结果元素。

%spark
var data = sc.parallelize(Seq(("C",3),("C",3),("C",2),("D",4),("A",1),("E",5)))
#需要传入表达式
var reduceFunc = data.reduceByKey((value,x) => (value + x))
reduceFunc.collect 输出:Array[(String, Int)] = Array((D,4), (A,1), (C,8), (E,5))

11、cogroup函数:对不同的数据集执行,比方说,(K,V)和(K,W)并返回(K,(Iterable,Iterable))元组的数据集。此操作也称为groupWith

%spark
var data1 = sc.parallelize(Seq(("A",1),("B",2),("C",3)))
var data2 = sc.parallelize(Seq(("B",4),("C",5),("D",6)))
var cogroupFun = data1.cogroup(data2)
cogroupFun.collect 输出:Array[(String, (Iterable[Int], Iterable[Int]))] = Array((B,(CompactBuffer(2),CompactBuffer(4))), (D,(CompactBuffer(),CompactBuffer(6))), (A,(CompactBuffer(1),CompactBuffer())), (C,(CompactBuffer(3),CompactBuffer(5))))

12、First函数:始终返回数据集的第一个元素。它类似于take(1)

%spark
var data = sc.parallelize(List(10,20,30))
data.first() 输出:Int = 10

13、take函数:它接收一个整数值(比方说,n)作为参数,并返回数据集的前n个元素的数组。

%spark
var data = sc.parallelize(List(10,20,30))
data.take(2) 输出:Array[Int] = Array(10, 20)

14、reduce函数:将RDD中元素前两个传给输入函数,产生一个新的return值,新产生的return值与RDD中下一个元素(第三个元素)组成两个元素,再被传给输入函数,直到最后只有一个值为止。

val c = sc.parallelize(1 to 10)
c.reduce((x, y) => x + y)//结果55

15、substract : 移除一个RDD中的内容。例如:移除RDD1中的RDD2

 val substractRDD = scalaRDD1.subtract(scalaRDD2)

16、sample: 对RDD进行采样, 传入的第一个参数是是否进行替换,第二个参数是采样的比例(返回的结果是随机的)

案例 : 在不替换的前提下,抽取RDD 10%的数据

val sampleRDD = scalaRDD1.sample(false, 0.1)
 

Spack 内置函数的更多相关文章

  1. Entity Framework 6 Recipes 2nd Edition(11-12)译 -> 定义内置函数

    11-12. 定义内置函数 问题 想要定义一个在eSQL 和LINQ 查询里使用的内置函数. 解决方案 我们要在数据库中使用IsNull 函数,但是EF没有为eSQL 或LINQ发布这个函数. 假设我 ...

  2. Oracle内置函数:时间函数,转换函数,字符串函数,数值函数,替换函数

    dual单行单列的隐藏表,看不见 但是可以用,经常用来调内置函数.不用新建表 时间函数 sysdate 系统当前时间 add_months 作用:对日期的月份进行加减 写法:add_months(日期 ...

  3. python内置函数

    python内置函数 官方文档:点击 在这里我只列举一些常见的内置函数用法 1.abs()[求数字的绝对值] >>> abs(-13) 13 2.all() 判断所有集合元素都为真的 ...

  4. DAY5 python内置函数+验证码实例

    内置函数 用验证码作为实例 字符串和字节的转换 字符串到字节 字节到字符串

  5. python之常用内置函数

    python内置函数,可以通过python的帮助文档 Build-in Functions,在终端交互下可以通过命令查看 >>> dir("__builtins__&quo ...

  6. freemarker内置函数和用法

    原文链接:http://www.iteye.com/topic/908500 在我们应用Freemarker 过程中,经常会操作例如字符串,数字,集合等,却不清楚Freemrker 有没有类似于Jav ...

  7. set、def、lambda、内置函数、文件操作

    set : 无序,不重复,可以嵌套 .add (添加元素) .update(接收可迭代对象)---等于批量 添加 .diffrents()两个集合不同差 .sysmmetric difference( ...

  8. SQL Server 内置函数、临时对象、流程控制

    SQL Server 内置函数 日期时间函数 --返回当前系统日期时间 select getdate() as [datetime],sysdatetime() as [datetime2] getd ...

  9. Python-Day3知识点——深浅拷贝、函数基本定义、内置函数

    一.深浅拷贝 import copy #浅拷贝 n1={'k1':'wu','k2':123,'k3':['carl',852]} n2=n1 n3=copy.copy(n1) print(id(n1 ...

随机推荐

  1. 我踩过的python的坑

    1. string中Template用法 变量名不能是${tradeDate+1}, python无法识别其为变量,应改为 ${tradeDate1} 变量替换的语句:data_new = Templ ...

  2. Python中去除字符串中的单个或多个空格的方法总结

    python中去除字符串中空格的方法比较多,单个看起来也都比较简单 但是使用起来容易发生混淆 为了加深记忆 将常用的去除字符串中空格的方法汇总如下 方法一:strip()方法 >>> ...

  3. 第10组 Alpha冲刺 (3/6)(组长)

    1.1基本情况 ·队名:今晚不睡觉 ·组长博客:https://www.cnblogs.com/cpandbb/p/13971668.html ·作业博客:https://edu.cnblogs.co ...

  4. Go语言系列之单元测试

    go test工具 Go语言中的测试依赖go test命令.编写测试代码和编写普通的Go代码过程是类似的,并不需要学习新的语法.规则或工具. go test命令是一个按照一定约定和组织的测试代码的驱动 ...

  5. GORM学习指南

    orm是一个使用Go语言编写的ORM框架.它文档齐全,对开发者友好,支持主流数据库. 一.初识Gorm Github GORM 中文官方网站内含十分齐全的中文文档,有了它你甚至不需要再继续向下阅读本文 ...

  6. Spring Security 接口认证鉴权入门实践指南

    目录 前言 SpringBoot 示例 SpringBoot pom.xml SpringBoot application.yml SpringBoot IndexController SpringB ...

  7. Docker 与 K8S学习笔记(十 二)容器间数据共享

    数据共享是volume的关键特性,今天我们来看一下通过volume实现容器与host.容器与容器之间共享数据. 一.容器与host共享数据 在上一篇中介绍到的bind mount和docker man ...

  8. 《剑指offer》面试题66. 构建乘积数组

    问题描述 给定一个数组 A[0,1,-,n-1],请构建一个数组 B[0,1,-,n-1],其中 B 中的元素 B[i]=A[0]×A[1]×-×A[i-1]×A[i+1]×-×A[n-1].不能使用 ...

  9. .NET 云原生架构师训练营(KestrelServer源码分析)--学习笔记

    目录 目标 源码 目标 理解 KestrelServer 如何接收网络请求,网络请求如何转换成 http request context(C# 可识别) 源码 https://github.com/d ...

  10. Android学习笔记2

    4,用intent在activity之间传递数据(两个Activity可能不是在一个应用程序中) (1),从MainActivity向HelloActivity传递参数123 package com. ...