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 对象和意义。

相关文章
|
2月前
|
前端开发
Antd中Table列表行默认包含修改及删除功能的封装
Antd中Table列表行默认包含修改及删除功能的封装
74 0
|
8月前
通过Function获取属性对应字段
通过Function获取属性对应字段
51 0
|
2天前
|
前端开发
let array = [{id:‘001‘,name:‘小新‘,age:5},{ id:‘002‘,name:‘小葵‘]这样数据如何遍历,拿到其中一个值,数组中装对象如何获取其中一个固定的值
let array = [{id:‘001‘,name:‘小新‘,age:5},{ id:‘002‘,name:‘小葵‘]这样数据如何遍历,拿到其中一个值,数组中装对象如何获取其中一个固定的值
ELEMENT组件库,如何让select出现默认值
ELEMENT组件库,如何让select出现默认值
|
2月前
|
存储 数据库
如何使用代码修改 attachment 实例的 CHANGED_BY 字段
如何使用代码修改 attachment 实例的 CHANGED_BY 字段
【TS】关于v-for数组对象遍历以及在页面上使用提示object类型的问题解决
【TS】关于v-for数组对象遍历以及在页面上使用提示object类型的问题解决
128 0
|
9月前
【element-ui用法】el-radio-group默认选择和数据回显问题的解决方案
【element-ui用法】el-radio-group默认选择和数据回显问题的解决方案
322 0
|
11月前
|
编译器 C语言 C++
【C++11】 列表初始化 auto 范围for 新增关键字 新增容器
【C++11】 列表初始化 auto 范围for 新增关键字 新增容器
71 0
|
12月前
|
索引
11-下拉框选择-Select类
11-下拉框选择-Select类
|
12月前
data-*属性的使用
data-*属性的使用
26 0