Как переместить все структуры JSON на один уровень / преобразовать все структуры JSON в строки в pyspark? - PullRequest
0 голосов
/ 03 октября 2019

Мне нужно было бы полностью сгладить многие (10TB +) все столбцы json в каждом файле.

Моя структура всегда повторяется, с этими правилами:

  • Ключ может быть 1-N
  • У меня есть три подключа:
    • s один,
    • n один,
    • и s, и n
  • мой столбец набора результатов должен быть именем key_s или key_n вместо s, n
  • в случае s и n будет два столбца

Мне нужно протолкнуть много данных через это и использовать потоковую передачу Spark, если это возможно.

Статическим решением будет:

data.select(col('key1').getItem('s').alias('key1_s')
           ,col('key2').getItem('s').alias('key2_s')
           ,col('key2').getItem('n').alias('key2_n')
           ,col('key3').getItem('n').alias('key3_n')
           ,col('key4').getItem('s').alias('key4_s')
           ,col('key5').getItem('s').alias('key5_s')
)

JSON имеет следующую структуру:

root
|- key 1: struct
|  | --s: string
|- key 2: struct
|  | --s: string
|  | --n: string
|- key 3: struct
|  | --n: string
|- key 4: struct
|  | --s: string
|- key 5: struct
   | --s: string 

Ожидаемый результат:

root
|- key 1_s: string
|- key 2_s: string
|- key 2_n: string
|- key 3_n: string
|- key 4_s: string
|- key 5_s: string 
...