Dataset 介绍_Dataset 是什么 | 学习笔记

简介: 快速学习 Dataset 介绍_Dataset 是什么

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段 Dataset 介绍_Dataset 是什么】学习笔记,与课程紧密联系,让用户快速学习知识。

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


Dataset 介绍_Dataset 是什么

 

spark SQL 初体验说到了 spark 系统不仅支持两种 API 的方式,第一种 SQL 支持命令和 SQL,对于命令式和 SQL 的支持,都是由 sparkSQL 的两个 API 或者一个 API 来进行支持,用于支持这两种范式的 API 叫做 Dataset,和 DataFrame。

Dataset 和 DataFrame 是什么吗?

没有去严格的单独的去说这两个,它的意义,但是又很重要,无论命令式还是系统,都要使用到这两个东西。

通过 Dataset 特点这一大章节,希望大家了解什么是 Dataset,以及他该如何去使用,先去介绍一下 Dataset 是什么,怎么用好 Dataset。

希望大家能够理解 set 里面都可以执行什么样的操作,我们的步骤要先去写一段代码来证明有什么用,再回答大家问题。

先看第一步,把代码写出来,打开 IDEA,我们去创建一个新的测试方法,命名为 Dataset1,命名了以后,要有一些步骤,编写的 sight 的代码的步骤。

第一步就是创建 spark session,在前面创建context,因为这个新的 SQL 出现,老的 spark context 没有那么够用了,只能搞一个统一的全局的一个新款的入口 API。

第二步,我们导入这个隐式转换中有一个叫做 to df 的 API,要想把一个 IDEA 转成一个 DataFame,或者转成一个 Dataset,要先去导这个隐式转换,才能进行相应的转换。

第三步,演示一下 sight 里面有什么,如果是这样的话,我们就先来看第一步, spark new 出来,Spark session Mark 是 builder,创建出来这个 builder,可以往其中设置 master,就不用使用 sight,直接使用 master,然后,写上 logical。

接下来设置一下name,这个 API name,我们通过 get or create,为什么还要在 get or create?

一般情况下,在这个 RDD 程序当中,会把 spark context 命名为 SC,spark session 就命名为 spark,接下来导入 important,Spark implictis,这个 spark 是一个包,然后,有一个叫做 implictis,这个 spark 是一个对象,把一个对象当中的 implictis 一个 object 导入进来,把这些隐式转换导入进来以后,就可以去创建一个 RDD,这个 RDD 创建就不再自己手写,创建一个 RDD 以后要求得到一个 data,通过这个source RDD,To DS 这样的一个 API,将其转为 Dataset。

首先我有一个需求,想查出年龄超过十岁的用户,现在是有两个用户,一个十岁,一个15岁。

查出这个李四来,这个代码可以怎么写,可以直接通过 Dataset,Filter 也可以,where 也可以,where 其实是 Filter的一个变种,filter 所支持的功能,相对来说还会更多一些。

我们首先来看 Filter,用 filter过滤掉不大于十是不是就可以了?Filter 当中可以直接使用 API 来进行操作吗?

比如说 item age 大于十岁,可以的,show 一下,接下来,第一种方式就是说这个Dataset 支持,就是支持强类型的 API,把 RDD 改为强类型,拿到一个 item,是一个强类型的 item,一个 person,所以在使用强类型的 APP是可以的,我们可不可以直接使用弱类型,弱类型 API 是什么意思?

就是让你直接通过一个点,通过 age 大于十也可以,我们再去 show 一下,show 完了以后,弱类型的 API 就这一种吗?

不一定,还有什么 Dataset,filter,这个其实有一个变种,你可以写为$age 大于10,这也是可以,直接写上 Dollar 是不行的,要在这个 Dollar 后面追加上一个字符,一个标识号,就可以去选中这个 age,然后我们可以再去 show,这个是我们的第二种弱类型的写法,不但可以使用这个弱类型的 API Dataset 还有厉害的的功能,就是它可以直接通过 SQL 表达式来进行查询,可以直接编写 SQL 表达式,我们来写一写,Dataset.set.filter 然后其中,可以直接 age 大于十,然后.show。

这四种方式都是可以的,以这个 item 这样的一个函数为代表的,这个强类型的 API,它是支持的,可以写成这种弱类型的 API,就是直接取其中的某一列。

image.png

这是我们的四种编写方式,我们来简单的运行一下。

可以看到,这是第一个 show 的结果,第一个 show 在这。

image.png

没有问题,我们再往下走,又经历了一个 action,每一个 action 是不是都是一次 join 的执行,我们再继续向下看,第二个结果也拿到了。

image.png

然后,我们再接下来看第三个结果,我们也拿到了。

image.png

最后,第四个结果也拿到了。

说明我们的代码是没有任何问题的,也就是说这个Dataset确实支持这四种方式。

 image.png

接下来回答一些问题

问题: People 是什么?

People 是一个强类型的类

问题2:这个 Dataset 中是结构化的数据吗?

非常明显是的,因为 People 对象中有结构信息,例如字段名和字段类型

间题3:这个 Dataset 能够使用类似 SQL 这样声明式结构化查询语句的形式来查询吗?

当然可以,已经演示过了

问题4: Dataset 是什么?

Dataset 是一个强类型,并且类型安全的数据容器,并且提供了结构化查询 API 和类似 RDD 一样的命令式 API。

相关文章
|
9月前
|
机器学习/深度学习 Linux PyTorch
Dataset and DataLoader 加载数据集
Dataset and DataLoader 加载数据集
100 0
|
11月前
|
PyTorch 算法框架/工具
【PyTorch】自定义数据集处理/dataset/DataLoader等
【PyTorch】自定义数据集处理/dataset/DataLoader等
123 0
|
11月前
|
机器学习/深度学习 数据采集 PyTorch
pytorch笔记:Dataset 和 DataLoader
pytorch笔记:Dataset 和 DataLoader
226 0
|
11月前
|
SQL 存储 分布式计算
Spark DataSet 和 DataFrame 的区别
Spark DataSet 和 DataFrame 的区别
132 0
|
机器学习/深度学习 PyTorch 算法框架/工具
Pytorch教程[02]DataLoader与Dataset
Pytorch教程[02]DataLoader与Dataset
Pytorch教程[02]DataLoader与Dataset
|
SQL 分布式计算 大数据
Dataset 介绍_ Dataset 底层类型 | 学习笔记
快速学习 Dataset 介绍_ Dataset 底层类型
145 0
Dataset 介绍_ Dataset 底层类型 | 学习笔记
|
SQL 分布式计算 大数据
Dataset介绍_将 Dataset 转为同泛型的 RDD | 学习笔记
快速学习 Dataset介绍_将 Dataset 转为同泛型的 RDD
129 0
Dataset介绍_将 Dataset 转为同泛型的 RDD | 学习笔记
|
SQL 存储 分布式计算
SparkSQL 初体验_Dataset 和 DataFrame | 学习笔记
快速学习 SparkSQL 初体验_Dataset 和 DataFrame
67 0
SparkSQL 初体验_Dataset 和 DataFrame | 学习笔记
C#编程-66:DataSet数据集的简单操作
C#编程-66:DataSet数据集的简单操作
C#编程-66:DataSet数据集的简单操作