有类型转换_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 的讲解。

相关文章
|
存储 算法 NoSQL
探秘HyperLogLog:Redis中的基数统计黑科技
探秘HyperLogLog:Redis中的基数统计黑科技
615 0
|
12月前
|
关系型数据库 MySQL Linux
宝塔面板BT Composer安装及使用教程
本文介绍,相信你已经掌握了在宝塔面板上安装和使用 Composer 的方法。希望这些内容能对你有所帮助,祝你在开发过程中一切顺利!
2546 2
|
人工智能 自然语言处理 搜索推荐
智源研究院开源中文互联网语料库CCI3.0,1000GB数据集,498GB高质量子集,魔搭社区可下载
近日,智源研究院正式发布中文互联网语料库CCI 3.0(Chinese Corpora Internet,简称 CCI)
|
11月前
|
数据可视化 安全 数据挖掘
亲测有效!J 人软件升级维护团队该用哪 6 款办公软件提效?
在竞争激烈的产品研发领域,高效的团队协作和个人学习效率是项目成败的关键。本文盘点推进。
163 3
|
SQL 关系型数据库 数据库连接
Python连接线上数据库的实战指南
Python连接线上数据库的实战指南
979 1
|
JavaScript Java 测试技术
基于微信小程序校园订餐的设计与实现(源码+lw+部署文档+讲解等)
基于微信小程序校园订餐的设计与实现(源码+lw+部署文档+讲解等)
117 1
|
NoSQL IDE Linux
【Linux C】GCC编译 && GDB调试 从入门到放弃 (gcc调试选项详解、gdb调试、条件断点、远程调试、脚本化调试)(一)
阅读本文可能需要一些基础,比如:C语言基础、Linux基础操作、vim、防火墙等。篇幅有限,本文讲的“比较浅显”。 通过本文你将学会: gcc编译 gdb调试
|
分布式计算 网络协议 Hadoop
大数据成长之路------hadoop集群的部署 配置系统网络(静态) 新增集群(三台)
大数据成长之路------hadoop集群的部署 配置系统网络(静态) 新增集群(三台)
188 0