有类型转换_去重 | 学习笔记

简介: 快速学习有类型转换_去重

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段:有类型转换_去重】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/690/detail/12073


有类型转换_去重

 

经常在编写一些这个代码的时候,或者大家自己在进行数据处理的时候,有没有发现在很多需求下都需要对结果集来进行去重,去重怎么去使用?

自己实现去重的话还是会有一点点难度的,就是包括使用 map filter 和 flat map,其实都不容易做到,还是比较难的。那去重怎么办?

这个 Spark 已经为我们提供了一个去重的 API,叫做 distinict。并且在我们 scala 当中,也有一个去重的 API。也叫 distinict,但是这个 Spark 当中,还为这个去重提供了一个别名叫做 dropDuplicates。drop 就是去除的意思,Duplicates 就是重复的意思,两个 API 我们一起去了解一下。

image.png

接下来进入到 idea 当中,创建一个新的方法,这个方法就命名为叫 def  dropDuplicates。

def  dropDuplicates(): Unit = {

val ds= spark.creatDataset( Seq(Person(“zhangsan”,15),

Person(“zhangsan”,15),Person(“list”,15)).toDS()

//里面存放三个 person 对象,通过 creatDataset 进行创建

ds .distinict( ).show()

ds .dropDuplicates(coli =”age”).show()

//第一种去重方式。

直接使用 distinct,使用这种 distinct,就能直接去除所有的列当中的重复。可以来看啊,这个 zhangsan 和这个 list 不算是重复列,也不算是重复行,假如说想去掉这个 age 上的重复,该怎么做呢?让我们等会儿再来了解。

这个时候呢,先去 show 一下,那么我们先去查看一下这个 distinct 的这样的一个 API 返回的结果,结果肯定是认为 zhangsan 和 list 不是同一个重复行,如果只想针对于这个 age 来进行去重,也就是说只要 age 相同,就认为是重复。

其实这种需求也经常会见到,那就需要更换一个 API,叫做 ds .dropDuplicates,然后接下来,这个里面需要去传上对应的要去重 age 的那个列,这个时候就去重成功了,但是这个地方传的列名,就不能只使用这个单引号来去进行上传了,需要去传一个字符串。

接下来运行:

image.png

看一看第二个结果集,结果也能发现,在这个 dropDuplicates 传入 age 以后,就只出现了一个 zhangsan15,因为这个 zhangsan15 是第一条。并且是按照 age 这一列来进行去重的,这就是去重的两种方式。

相关文章
|
Java
Java通过Lambda表达式根据指定字段去除重复数据(集合去重)
Java通过Lambda表达式根据指定字段去除重复数据(集合去重)
1493 0
Java通过Lambda表达式根据指定字段去除重复数据(集合去重)
|
分布式计算 大数据 Scala
有类型转换_集合操作 | 学习笔记
快速学习有类型转换_集合操作
有类型转换_集合操作 | 学习笔记
|
SQL 分布式计算 大数据
无类型转换_列操作 | 学习笔记
快速学习无类型转换_列操作
102 0
无类型转换_列操作 | 学习笔记
|
SQL 大数据 API
无类型转换_groupBy | 学习笔记
快速学习无类型转换_groupBy
无类型转换_groupBy | 学习笔记
|
分布式计算 大数据 Spark
有类型转换_groupByKey | 学习笔记
快速学习有类型转换_groupByKey
122 0
有类型转换_groupByKey | 学习笔记
|
SQL 分布式计算 大数据
有类型转换_orderBy | 学习笔记
快速学习有类型转换_orderBy
146 0
有类型转换_orderBy | 学习笔记
|
SQL 分布式计算 安全
有类型转换_map | 学习笔记
快速学习有类型转换_map
有类型转换_map | 学习笔记
|
SQL 分布式计算 大数据
有类型转换_as | 学习笔记
快速学习有类型转换_as
有类型转换_as | 学习笔记
|
安全 PHP 开发者
类型转换| 学习笔记
快速学习类型转换。
|
存储 Go 开发者
整数类型使用细节|学习笔记
快速学习整数类型使用细节。