本文篇幅較短,內容源於自己在使用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
查看表結構:
另一種轉換方式:
dfs0306.withColumn("time",dfs0306("time").cast("Long"))
OK,一個簡單的表結構變換便完成了,又get了一個小技巧。
版權聲明:本文為博主原創文章,轉載請注明來源。 https://blog.csdn.net/Dream_angel_Z/article/details/52005790