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)

目的:將clickview轉成的類型轉成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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM