Разнесите массив в столбцы Spark - PullRequest
0 голосов
/ 14 июня 2019

Hi1, у меня есть jow как beow:

{meta:{"clusters":[{"1":"Aged 35 to 49"},{"2":"Male"},{"5":"Aged 15 to 17"}]}}

, и я хотел бы получить следующий фрейм данных:

+---------------+----+---------------+
|              1|   2| 5             |
+---------------+----+---------------+
|  Aged 35 to 49|Male|  Aged 15 to 17|
+---------------+----+---------------+   

Как я могу сделать это в pyspark?
Спасибо

1 Ответ

1 голос
/ 14 июня 2019

Вы можете использовать функцию get_json_object() для анализа столбца json:

Пример:

df=spark.createDataFrame([Row(jsn='{"meta":{"clusters":[{"1":"Aged 35 to 49"},{"2":"Male"},{"5":"Aged 15 to 17"}]}}')])

df.selectExpr("get_json_object(jsn,'$.meta.clusters[0].1') as `1`",
"get_json_object(jsn,'$.meta.clusters[*].2') as `2`",
"get_json_object(jsn,'$.meta.clusters[*].5') as `5`").show(10,False)

«Вывод»:

+-------------+------+---------------+
|1            |2     |5              |
+-------------+------+---------------+
|Aged 35 to 49|"Male"|"Aged 15 to 17"|
+-------------+------+---------------+
...