1列の値に基づいて、データセットの列に設定された値する必要があります

アーディティヤ・シン:

私が持っているDataset<Row>Javaで。私は、JSON文字列である1列の値を読んで、それを解析し、解析された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|
----------------------------------------

私はそれを行う方法を見つけ出すことができません。コードで助けてください。

パベルフィラトフ:

機能がありますget_json_objectスパークに存在します。示唆は、名前付きデータフレームを持っているdfあなたはあなたの問題を解決するためにこの方法を選択することができ、:

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

しかし、何よりもまず、あなたのことを確認してくださいjson属性は二重引用符の代わりに単一のものを持っています。

注: スパークSQL関数の完全なリストがあります私は頻繁にそれを使用しています。時間をブックマーク、基準時間にそれを追加することを検討してください。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=180596&siteId=1