[英]Create JSON column in Spark Scala
在 spark (+scala) 作業中進行一些轉換后,我有一些數據需要寫成 JSON 字符串。 我正在使用 to_json 函數以及結構和/或數組函數來構建請求的最終 json。
我有一段 json 看起來像:
"field":[
"foo",
{
"inner_field":"bar"
}
]
我不是 JSON 專家,所以我不知道這種結構是否常見,我只知道這是一種有效的 JSON 格式。 我在使用這種格式創建數據框列時遇到問題,我想知道創建此類數據列的最佳方法是什么。
提前致謝
如果你有一個包含一堆列的數據框,你想把它變成一個 json 字符串列,你可以使用to_json
和struct
函數。 像這樣:
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.