开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段:Column对象_操作_API】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/690/detail/12081
Column对象_操作_API
接下来学习 Column 对象当中的一些方法和 API ,进入到笔记当中,要了解四个方法,分别是 withColumn、like、isin、sort。
接下来了解这些操作进入到这个 idea 当中,其实这些 Column 的操作,前面或多或少都见过,所以这一小节就对其进行一个总结。
def api(): Unit ={
val ds :Dataset[Person]
=Seq(Person(“zhangsan”,15),person(“lisi”:,10)).
toDS()
//age*2其实本质上就是将一个表达式,那是逻辑计划表达式,附着到这个 Column 对象上,然后这个表达式表达式在执行的时候,对应每一条数据进行操作,这个就是乘号,这个乘号其实是 Column 当中的方法。
比如:ds.withColumn(colName =”doubled”,’age.*(other =2))
.*(other =2)这是在调用一个方法,只不过这个方法名字特殊一点,叫做长号,这种自定义操作符*,也是 SQL 当中的一个极其奇怪的一个特点。
//需求一,希望扩展 ds ,增加新的列(双倍年龄)
ds.withColumn(colName =”doubled”,col =’age =2).show()
//withColumn需要制定一个列名,命名为 doubled,取到年龄乘以2,实现把年龄双倍。
//需求二,执行一个模糊查询
//SQL 语句中:select*from table where name like zhang%
ds.where(codition =’name like “zhangsan%”).show()
//进行查询使用 where,就可以使用 name ,查看 zhangsan,加一个百分号,这个百分号代表统配的意思
//需求三, 规定正反序
ds.sort(sortExprs =’age asc).show()
升序 asc,降序 dsc。
//需求四, 判断一下枚举
ds.where(condition
=‘name isin(“zhangsan”,”wangwu”,”zhaoliu”)).show()
//想查三个名字的用户,用 name isin 进行判断,来一个元组,放入这三个用户。
以上就是四个需求。
比如说,现在在 column 对象中,点上 Structure,点开这个结构信息,这个结构信息里面有 expr 表达式,column 当中会有一个表达式作用于每一个数据,“===”是判断相等,“=|是判断不相等(not equal)。然后有很多操作,还有一些逻辑运算等等。打开结构信息就大概知道该怎么用了,并且这个地方也给出示例,大家要善于去看这个注释。通过这个注释,其实能减少大家的辛苦的操作。
运行一下这段代码
结果:
需求一其实就是增加了一个新的 double 列(doubled),就是把 age 这一列的所有数据乘以二。
接下来还有一个就是取得 zhangsan,这是第二个需求。
第三个需求就是一个正反序的排列。现在是正序,通过 dsc 就是反序。
在接下来续枚举判断,其实只查出了 zhangsan。那我们很多时候,在 Spark 系统当中进行一些运算,一些操作的时候,是通过 column 这个对象来进行的。
所以有一些操作大家不是很清楚的时候。比如说想判断某一列,它是大于某一列,那么就应该从这个 column 上着手。
以上就是 Column 对象_操作_API 的内容。




