亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

需要根據 1 列的值在數據集的列中設置值

需要根據 1 列的值在數據集的列中設置值

HUH函數 2023-01-05 17:25:08
我有一個Dataset<Row>在java中。我需要讀取 1 列的值,它是一個 JSON 字符串,解析它,并根據解析的 JSON 值設置其他幾個列的值。我的數據集如下所示:|json                     | name|  age |======================================== | "{'a':'john', 'b': 23}" | null| null |----------------------------------------| "{'a':'joe', 'b': 25}"  | null| null |----------------------------------------| "{'a':'zack'}"          | null| null |----------------------------------------我需要這樣做:|json                     | name  |  age |======================================== | "{'a':'john', 'b': 23}" | 'john'| 23 |----------------------------------------| "{'a':'joe', 'b': 25}"  | 'joe' | 25 |----------------------------------------| "{'a':'zack'}"          | 'zack'|null|----------------------------------------我無法找到一種方法來做到這一點。請幫助代碼。
查看完整描述

2 回答

?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

get_json_objectSpark 中存在一個函數。建議,您有一個名為 的數據框df,您可以選擇這種方式來解決您的問題:

df.selectExpr("get_json_object(json, '$.a') as name", "get_json_object(json, '$.b') as age" )

但首先,確保你的json屬性有雙引號而不是單引號。

注意: 這里有完整的 Spark SQL 函數列表。我正在大量使用它??紤]將其添加到書簽和不時參考。


查看完整回答
反對 回復 2023-01-05
?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

你可以使用 UDF


def parseName(json: String): String = ??? // parse json

val parseNameUDF = udf[String, String](parseName)


def parseAge(json: String): Int = ??? // parse json

val parseAgeUDF = udf[Int, String](parseAge)


dataFrame

.withColumn("name", parseNameUDF(dataFrame("json")))

.withColumn("age", parseAgeUDF(dataFrame("json")))


查看完整回答
反對 回復 2023-01-05
  • 2 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號