SparkSQL之更改表结构

本文篇幅较短,内容源于本身在使用SparkSQL时碰到的一个小问题,由于在以后的数据处理过程当中屡次使用,因此为了加深印象,在此单独成文,以便回顾。json

场景

在使用SparkSQL进行数据处理时,碰到这样一种状况:须要更改DataFrame当中某个字段的类型。简而言之,就是须要更改SparkSQL的表结构。出于学习的目的,作了一个简单的Demo。下面来看看这个实例。markdown

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)

目的:将clickview转成的类型转成Longpost

操做以下:学习

首先须要定义一个函数,将表内的`Double`类型转为`Long`类型,函数以下:url

val toLong = udf[Long, Double](_.toLong)

而后使用withColumn变换字段类型,代码以下:spa

val dfs2 = dfs.withColumn("click", toLong(dfs("click"))).withColumn("view", toLong(dfs("view")))

使用printSchema查看表结构:.net

 另外一种转换方式:scala

      dfs0306.withColumn("time",dfs0306("time").cast("Long"))3d

OK,一个简单的表结构变换便完成了,又get了一个小技巧。

相关文章
相关标签/搜索