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

相关文章
|
Java
别再被 Java 类和对象绕晕了!一篇文章让你秒懂!
【6月更文挑战第15天】Java中的类是对象的模板,定义属性(如姓名、年龄)和行为(如走路、说话)。对象是类的实例,有自己的属性值。例如,`Person`类可创建`Person`对象,赋予属性值并调用方法。同样,`Car`类可创建不同品牌的汽车对象,每个对象能加速或刹车。理解类与对象的关系是Java面向对象编程的基础。
94 0
|
11月前
冒泡排序
冒泡排序。
76 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,结果不能共存的解决
|
运维 监控 搜索推荐
【电商搜索】现代工业级电商搜索技术-Ha3搜索引擎平台简介
【电商搜索】现代工业级电商搜索技术-Ha3搜索引擎平台简介
|
Java 开发者 UED
“Java开发者必看:异步编程实战解析,掌握这些技巧,让你的代码跑得更快!
【8月更文挑战第30天】随着互联网技术的发展,系统性能和用户体验成为关注焦点。异步编程作为提高应用响应速度和吞吐量的技术,在Java中广泛采用。本文详细介绍了Java异步编程的概念与优势,并通过实战示例展示了如何利用Future、Callable及CompletableFuture在实际项目中实施异步编程,帮助开发者更好地理解和应用这一技术。
182 2
|
存储 关系型数据库 MySQL
|
自然语言处理 测试技术 计算机视觉
ICLR 2024:Time-LLM:基于大语言模型的时间序列预测
【2月更文挑战第28天】ICLR 2024:Time-LLM:基于大语言模型的时间序列预测
2193 1
ICLR 2024:Time-LLM:基于大语言模型的时间序列预测
|
存储 PHP 数据库
PHP会话技术session我不允许还有人不会!
PHP会话技术session我不允许还有人不会!
179 0
|
消息中间件 存储 运维
基于云基础设施快速部署 RocketMQ 5.0 集群
如何解决在云基础设施上部署 RocketMQ 时面临多节点部署带来的高操作成本等诸多挑战?快来了解 RocketMQ Operator 是怎样支撑 RocketMQ 集群在云基础设施上的自动化运维与管理吧!
1272 0
基于云基础设施快速部署 RocketMQ 5.0 集群
|
Oracle Ubuntu 关系型数据库
ubuntu docker 安装oracle数据库产生的问题
ubuntu docker 安装oracle数据库产生的问题
ubuntu docker 安装oracle数据库产生的问题