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

相关文章
|
10月前
冒泡排序
冒泡排序。
73 5
|
Java 数据库连接 mybatis
成功解决: Invalid bound statement (not found) 在已经使用mybatis的项目里引入mybatis-plus,结果不能共存的解决
这篇文章讨论了在已使用MyBatis的项目中引入MyBatis-Plus后出现的"Invalid bound statement (not found)"错误,并提供了解决方法,主要是通过修改yml配置文件来解决MyBatis和MyBatis-Plus共存时的冲突问题。
成功解决: Invalid bound statement (not found) 在已经使用mybatis的项目里引入mybatis-plus,结果不能共存的解决
|
存储 关系型数据库 MySQL
|
存储 PHP 数据库
PHP会话技术session我不允许还有人不会!
PHP会话技术session我不允许还有人不会!
157 0
|
消息中间件 存储 运维
基于云基础设施快速部署 RocketMQ 5.0 集群
如何解决在云基础设施上部署 RocketMQ 时面临多节点部署带来的高操作成本等诸多挑战?快来了解 RocketMQ Operator 是怎样支撑 RocketMQ 集群在云基础设施上的自动化运维与管理吧!
1239 0
基于云基础设施快速部署 RocketMQ 5.0 集群
|
存储 Java
在项目中使用——newFixedThreadPool线程池
在项目中使用——newFixedThreadPool线程池
551 0
|
Oracle Ubuntu 关系型数据库
ubuntu docker 安装oracle数据库产生的问题
ubuntu docker 安装oracle数据库产生的问题
ubuntu docker 安装oracle数据库产生的问题
|
前端开发 网络协议 JavaScript
超简单的Vue+Electron快速开发多端在线笔记本
开发一个完整的 Electron 小项目,不依赖框架的原生 Node 如何开发 http 服务,接收处理参数、接收表单图片、创建图片静态服务,Electron 中如何顺利进行进程通信、资源目录注意事项等。
|
存储 关系型数据库 MySQL
MySQL 数据库 Schema 设计的性能优化①:高效的模型设计
很多人都认为性能是在通过编写代码(程序代码或者是数据库代码)的过程中优化出来的,其实这是一个非常大的误区。真正影响性能最大的部分是在设计中就已经产生了的,后期的优化很多时候所能够带来的改善都只是在解决前妻设计所遗留下来的一些问题而已,而且能够解决的问题通常也比较有限。 博主将就如何在 MySQL 数据库 Schema 设计的时候保证尽可能的高效,尽可能减少后期的烦恼会分3篇文章来进行详细介绍!
MySQL 数据库 Schema 设计的性能优化①:高效的模型设计
|
网络协议 物联网
刚才,我们宣布推出了IPv6转换服务
随着海量智能设备的出现和新兴网络技术如5G、物联网的发展,网络应用对IP地址的需求呈现爆炸式增长。 大家所不了解的事实是全球IPv4地址,也就是现在大部分设备在使用的标准地址,已经枯竭。我国7.51亿互联网用户仅有3.38亿个IPv4地址,人均拥有量仅有0.45个IPv4地址。
9963 1