簡體   English   中英

在 Spark Scala 中創建 JSON 列

[英]Create JSON column in Spark Scala

在 spark (+scala) 作業中進行一些轉換后,我有一些數據需要寫成 JSON 字符串。 我正在使用 to_json 函數以及結構和/或數組函數來構建請求的最終 json。

我有一段 json 看起來像:

"field":[
    "foo",
    {
        "inner_field":"bar"
    }
]

我不是 JSON 專家,所以我不知道這種結構是否常見,我只知道這是一種有效的 JSON 格式。 我在使用這種格式創建數據框列時遇到問題,我想知道創建此類數據列的最佳方法是什么。

提前致謝

如果你有一個包含一堆列的數據框,你想把它變成一個 json 字符串列,你可以使用to_jsonstruct函數。 像這樣:

import org.apache.spark.sql.types._

val df = Seq(
  (1, "string1", Seq("string2", "string3")),
  (2, "string4", Seq("string5", "string6"))
  ).toDF("colA", "colB", "colC")

df.show                                                                                                                                                                                                                                                                  
+----+-------+------------------+                                                                                                                                                                                                                                               
|colA|   colB|              colC|                                                                                                                                                                                                                                               
+----+-------+------------------+                                                                                                                                                                                                                                               
|   1|string1|[string2, string3]|                                                                                                                                                                                                                                               
|   2|string4|[string5, string6]|                                                                                                                                                                                                                                               
+----+-------+------------------+

val newDf = df.withColumn("jsonString", to_json(struct($"colA", $"colB", $"colC")))

newDf.show(false)                                                                                                                                                                                                                                                        
+----+-------+------------------+--------------------------------------------------------+                                                                                                                                                                                      
|colA|colB   |colC              |jsonString                                              |                                                                                                                                                                                      
+----+-------+------------------+--------------------------------------------------------+                                                                                                                                                                                      
|1   |string1|[string2, string3]|{"colA":1,"colB":"string1","colC":["string2","string3"]}|                                                                                                                                                                                      
|2   |string4|[string5, string6]|{"colA":2,"colB":"string4","colC":["string5","string6"]}|                                                                                                                                                                                      
+----+-------+------------------+--------------------------------------------------------+

struct從多個列中生成單個 StructType 列,然后to_json將它們轉換為 json 字符串。

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM