有类型转换_orderBy | 学习笔记

简介: 快速学习有类型转换_orderBy

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

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


有类型转换_orderBy

 

了解排序,因为我们经常需要对数据集进行排序,这是一个基础功能。那么排序相关联的这个算子有两个,一个叫做 olderBY。还有一个叫做 sort,好,这两个算子,其实也是同一个算子,olderBY 的底层是 sort。

image.png

接下来就进入到 idea 中,创建出来一个方法命名为 sort。

def sort(): Unit = {

val ds= Seq(Person(“zhangsan”,12),

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

//里面存放三个 person 对象

ds .orderBy( ‘age,desc).show()

//使用 orderBy 进行排序 ,两种方式传入列名,第一种方式直接传入 name 这一列:sortCol =”name”,因为这个 person 对象当中是有 scala 信息。其中有一个列叫做 name,有一个列叫做 age。第一种方式,其实也经常用,但是没有那么方便。

第二种方式,就是使用单引号:ds .orderBy( sortCol =‘name’

然后呢,可以去选中内容啊,当然要使用这个单引号来去选中一个列的时候,就必须要去导入隐式转换。这样 orderBy 就讲完了。

大家有没有想一个问题,这个 orderBy 现在按照 name 这一列进行排序的时候,它是升序还是降序?怎么去指定?

我们可以点进去 orderBy 看一下这个,那么这时候发现 order by,除了这个方法以外,往上走一走,还有一个重载方法,那里头传的是 sortCol。还有一个传的是表达式 Column 对象,比如使用那个那个单引号获得的对象,其实就是一个 Column 对象。

如果是这样的话,那大家有发现在哪里传排序规则了吗?就是怎么传它是升序还是降序。这时候回到代码当中,在代码当中可以看到这个单引号 name 其实是一个 column 对象,这个 Column 对象本身有一个这个属性叫做 asc,asc 代表的是升序,但是在升序排列的时候,我们可以指定,假如说有空值的话,这个空值应该在前还是应该在后。另一种也可以用 desc,当然也可以指定空值排在前还是排在后,那这是我们的两种排序方式。

ds.sort( ‘age.asc).show()

//接下来,除了 orderBy 以外,Dataset 当中还有一个方法叫做 sort 方法,和 orderBy 的方法调用规则是完全一模一样的。

输入 asc.设置为升序,name 是字符串,虽然它也可以排序,并不是特别方便,所以还是使用 age(ds.sort( ‘name.asc)改为 ds.sort( ‘age.asc))。

这个地方也可以进行一个 show,那这个时候就可能会有疑惑,那么为什么又有一个 orderBy,又有一个 sort?

是因为在这个 SQL 语句当中,是不是经常写什么 select*from....orderBy...asc,这个时候都注意到,那么这个 order by 是 scala 当中的 order by,现在搞的 Spark scala,有这个有类型的,有无类型的算子,那么我们这个地方 orderBy( ‘age,desc),其实就是为了配合 SQL 语句。

运行一下代码:

image.png

运行出结果完了,第一个结果按照降序排列的,第二个结果按照升序进行排列的,这就是排序的结果。

以上就是有类型转换_orderBy 的讲解。

相关文章
|
9月前
qsort排序的基本用法
qsort排序的基本用法
36 0
|
存储 安全 Java
Java数据类型与运算符
Java数据类型与运算符
69 0
|
9月前
|
C#
C#中sort排序相关用法介绍
C#中sort排序相关用法介绍
|
9月前
|
SQL 开发框架 .NET
C#进阶-LINQ表达式之GroupBy分组查询
本篇文章我们将演示LINQ扩展包基础语法里的GroupBy分组查询,并实现投影等实际操作中常用的类型转换手法。目前LINQ支持两种语法,我会在每个案例前先用大家熟知的SQL语句表达,再在后面用C#的两种LINQ语法分别实现。LINQ语法第一次接触难免感到陌生,最好的学习方式就是在项目中多去使用,相信会有很多感悟。
338 0
|
存储 Oracle Java
Java数据类型,变量与运算符
Java数据类型,变量与运算符
66 0
WHERE子句操作符
WHERE子句操作符
62 0
|
编译器 数据安全/隐私保护 C++
用 typeid 操作符 做一个C++数据类型大全
用 typeid 操作符 做一个C++数据类型大全
148 0
|
SQL 大数据 API
无类型转换_groupBy | 学习笔记
快速学习无类型转换_groupBy
无类型转换_groupBy | 学习笔记
|
分布式计算 大数据 API
有类型转换_去重 | 学习笔记
快速学习有类型转换_去重
103 0
有类型转换_去重 | 学习笔记
|
分布式计算 大数据 Scala
有类型转换_集合操作 | 学习笔记
快速学习有类型转换_集合操作
有类型转换_集合操作 | 学习笔记