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了一個小技巧。

相關文章
相關標籤/搜索