разбирать строку jsons pyspark - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь проанализировать столбец списка строк 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"}]

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

Pyspark: проанализировать столбец строк json

Не могли бы вы помочь?

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

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

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

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

0 голосов
/ 07 декабря 2018

Вы можете проанализировать данную схему 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"}]
...