sql自学难吗SparkSQL之更改表结构
本⽂篇幅较短,内容源于⾃⼰在使⽤SparkSQL时碰到的⼀个⼩问题,因为在之后的数据处理过程中多次使⽤,所以为了加深印象,在此单独成⽂,以便回顾。
场景
在使⽤SparkSQL进⾏数据处理时,碰到这样⼀种情况:需要更改DataFrame当中某个字段的类型。简⽽⾔之,就是需要更改SparkSQL 的表结构。出于学习的⽬的,做了⼀个简单的Demo。下⾯来看看这个实例。
Example
......
......
此处省略相关jar包的引⼊
⾸先使⽤sparkSQL的jsonFile加载HDFS上的⼀个⽂件(此步在此直接省略了),得到如下的表结构:
scala> dfs.printSchema
root
|-- name: string (nullable = true)
|-- desc: string (nullable = true)
|-- click: double (nullable = true)
|-- view: double(nullable = true)
⽬的:将click和view转成的类型转成Long。
操作如下:
⾸先需要定义⼀个函数,将表内的`Double`类型转为`Long`类型,函数如下:
val toLong = udf[Long, Double](_.toLong)
然后使⽤withColumn变换字段类型,代码如下:
val dfs2 = dfs.withColumn("click", toLong(dfs("click"))).withColumn("view", toLong(dfs("view")))
使⽤printSchema查看表结构:
scala> dfs2.printSchema
root
|-- name : string (nullable = true)
|-- desc : string (nullable = true)
|-- click: long (nullable = true)
|-- view: long (nullable = true)
OK,⼀个简单的表结构变换便完成了,⼜get了⼀个⼩技巧。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论