Разбирать строку 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)
а затем применил эту схему к столбцу сложного типа данных