本文篇幅較短,內容源於本身在使用SparkSQL時碰到的一個小問題,由於在以後的數據處理過程當中屢次使用,因此爲了加深印象,在此單獨成文,以便回顧。json
在使用SparkSQL進行數據處理時,碰到這樣一種狀況:須要更改DataFrame當中某個字段的類型。簡而言之,就是須要更改SparkSQL的表結構。出於學習的目的,作了一個簡單的Demo。下面來看看這個實例。markdown
...... ...... 此處省略相關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
。post
操做以下:學習
首先須要定義一個函數,將表內的`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了一個小技巧。