Разбирать строку jsons pyspark

Я пытаюсь проанализировать столбец списка строк json, но даже после попытки нескольких схем с использованием structType, structField и т. Д. Я просто не могу получить схему вообще.

[{"event":"empCreation","count":"148"},{"event":"jobAssignment","count":"3"},{"event":"locationAssignment","count":"77"}]

[{"event":"empCreation","count":"334"},{"event":"jobAssignment","count":33"},{"event":"locationAssignment","count":"73"}]

[{"event":"empCreation","count":"18"},{"event":"jobAssignment","count":"32"},{"event":"locationAssignment","count":"72"}]

Основываясь на этом посте, я смог получить схему json, но даже после применения функции from_json она все равно не сработала

Pyspark: разобрать столбец строк json

Можете ли вы помочь?

2 ответа

Вы можете проанализировать данную схему json с приведенным ниже определением schame и прочитать json как DataFrame, предоставляющий информацию о схеме.

>>> dschema = StructType([
...         StructField("event", StringType(),True),
...         StructField("count", StringType(),True)])
>>>

>>>
>>> df = spark.read.json('/<json_file_path>/json_file.json', schema=dschema)
>>>
>>> df.show()
+------------------+-----+
|             event|count|
+------------------+-----+
|       empCreation|  148|
|     jobAssignment|    3|
|locationAssignment|   77|
|       empCreation|  334|
|     jobAssignment|   33|
|locationAssignment|   73|
|       empCreation|   18|
|     jobAssignment|   32|
|locationAssignment|   72|
+------------------+-----+

>>>

Содержимое файла JSON:

cat json_file.json
[{"event":"empCreation","count":"148"},{"event":"jobAssignment","count":"3"},{"event":"locationAssignment","count":"77"}]
[{"event":"empCreation","count":"334"},{"event":"jobAssignment","count":"33"},{"event":"locationAssignment","count":"73"}]
[{"event":"empCreation","count":"18"},{"event":"jobAssignment","count":"32"},{"event":"locationAssignment","count":"72"}]

Большое спасибо @Lakshmanan, но мне нужно было просто добавить небольшое изменение в схему:

eventCountSchema = ArrayType(StructType ([StructField ("event", StringType (), True), StructField ("count", StringType (), True)]), True)

а затем применил эту схему к столбцу сложного типа данных

Другие вопросы по тегам