Спарк читает Json с изменением схемы - PullRequest
0 голосов
/ 02 октября 2019

Я читаю файлы Json со следующей схемой:

    root
 |-- events: struct (nullable = true)
 |    |-- profile: struct (nullable = true)
 |    |    |-- clusters: struct (nullable = true)
 |    |    |    |-- 10: long (nullable = true)
 |    |    |    |-- 102: long (nullable = true)
 |    |    |    |-- 105: long (nullable = true)
 |    |    |    |-- 106: long (nullable = true)
 |    |    |    |-- 109: long (nullable = true)
 |    |    |    |-- 110: long (nullable = true)  

И мне нужно создать информационный кадр из вложенных выборок.

spark.read.format("json").
option("compression","gzip").
load("datamining_20191001-000000_24.json.gz").
select("events.profile.clusters.*").limit(5).show()

Однако схема имеетнемного изменилось, сделав все более хитрым:

 root
 |-- events: struct (nullable = true)
 |    |-- profile: struct (nullable = true)
 |    |    |-- segments: struct (nullable = true)
 |    |    |    |-- 10: long (nullable = true)
 |    |    |    |-- 102: long (nullable = true)
 |    |    |    |-- 105: long (nullable = true)
 |    |    |    |-- 106: long (nullable = true)
 |    |    |    |-- 109: long (nullable = true)
 |    |    |    |-- 110: long (nullable = true)  

Как я могу изменить свой код таким образом, чтобы искра считывала сегменты и кластеры полей как один и тот же столбец?

...