Column 对象_创建_有绑定| 学习笔记

简介: 快速学习 Column 对象_创建_有绑定

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段Column 对象_创建_有绑定】学习笔记,与课程紧密联系,让用户快速学习知识。

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


Column 对象_创建_有绑定

 

之前讲解知识点:

Column 有四种创建方式,以及 Column 对象可以用作于 Dataset 和 Dataframe,Column 对象可以和命令式的这弱类型的 API 来进行配合使用,比如说  select、where。

还有一种创建方式是通过一个 dataset 来进行创建的,先去创建一个 dataset,

val ds =Seq(Person(“zhangsan”,15),person(“lisi”:,10)).

toDS()

val ds1=Seq(Person(“zhangsan”,15),person(“lisi”:,10)).

toDS()

//6.dataset.col

val column4 : sql.Column   =_ds.col(colName =”name”)

val column5  : sql.Column  =_ds1.col(colName =”name”)

//column4和 column5的区别:

一个是通过 ds 创建的,还有一个是通过 ds1创建的,column4和 column5是绑定了具体的某一个 dataset。

ds.select(column5).show()//会报错

输入 ds.select(column5)是不对的,column5是属于 ds1的 dataset

ds.select 属于ds1的 dataset 是会失败的,ds.select(column5).

show()进行运行,结果是报错的,出现 resolved attribute(s) name#7 missing from name#2,age 3....这样的报错,优化器有一个分析的步骤把一个信息加进去,name#7是一个 name 字段编号为7,但是要在这个 name 字段编号为2,age 字段为3的一个 dateset 去选择 name#7 这一列,是选择不到的。

image.png

总结:

使用 dataset 来获取 column 对象,会和某个 Dataset 进行绑定,在逻辑计划中,就会有不同的表现。就是前面的通过 Column 对象进入算子之后,才会对应生成#7,现在是直接生成 #7。

//为什么要和 dataset 进行绑定?

ds1.join(ds1, joinExprs= ’name=== ‘name)

使用 ds.select(cols =’name).show 也可以,使用 Dataset 创建 column5的意义是什么?

写一个小的操作:

ds1.join(ds1, joinExprs= ’name=== ‘name),这个是不对的,要通过 ds.col生成一个 name 列,改为:

ds.join(ds1, ds.col(colName= “name”=== ds1, ds.col(colName= “name”),和 dataset 做绑定,是为了做这种判定。

//7.dataset.apply

val column6 : sql.Column =ds.apply(“name”)

Val cloumn7 : sql.Column = ds.(“name”)

//通过对象的apply 方法来去创建的一个Column对象.这个 column6 对象通过 ds.apply 创建出来的。apply是什么方法,有什么特点?

如果一个对象有 apply 方法,调用 apply 方法和直接调用这个对象是一样的,只要有apply 方法,ds(“”)里面传入的内容就会给到apply方法,其实 ds(“”) 是 ds.apply(“name”)

的别名,就可以通过 Column创建对象。

总结:

提到了两种创建方式,两种方针方式 dataset.col 和 dataset.apply

,其实都是和 Dataset 进行绑定的,并且介绍了如何使用 Dataset 进行绑定的 column 对象和意义。

相关文章
|
7月前
|
前端开发
Antd中Table列表行默认包含修改及删除功能的封装
Antd中Table列表行默认包含修改及删除功能的封装
176 0
|
C# 数据库
C# DataGridView用法(—)代码绑定数据源
C# DataGridView用法(—)代码绑定数据源
467 1
ELEMENT组件库,如何让select出现默认值
ELEMENT组件库,如何让select出现默认值
|
7月前
|
SQL 存储 Oracle
为什么 GROUP BY 之后不能直接引用原表中的列
为什么 GROUP BY 之后不能直接引用原表中的列
45 1
|
7月前
mongoTemplate 嵌套对象包含id
mongoTemplate 嵌套对象包含id
65 0
|
存储 JavaScript
如何使用 ref 属性获取子组件实例对象?
如何使用 ref 属性获取子组件实例对象?
153 0
|
分布式计算 Java 大数据
Column 对象_创建1 | 学习笔记
快速学习 Column 对象_创建1
132 0
Column 对象_创建1 | 学习笔记
|
SQL 分布式计算 大数据
Column 对象_操作_别名和类型 | 学习笔记
快速学习 Column 对象_操作_别名和类型
114 0
Column 对象_操作_别名和类型 | 学习笔记
|
Java 编译器
创建一个对象的时候
创建一个对象的时候
79 0
|
缓存 安全 Java
仅且仅创建一次对象
此篇算是对《voliatile,synchronized,cas》理论的一种实践
159 0