Spark, выведите отдельную схему для каждого объекта JSON в массиве JSON

#json #scala #dataframe #apache-spark #schema

Вопрос:

У меня есть файл JSON. Каждая строка представляет собой массив объектов. Например, это первая строка:

 [{"id":"JklsdgNkl543", "field1":"value1", "field2":{"nestedField1":"1", "nestedField2":2}}, 
 {"id":"rweiuTH2325d", "field1":"smthng", "field2":{"nestedField1":"6", "nestedField2":8}},
 ...,
]
 

Итак, файл содержит сотни тысяч этих строк, каждая строка содержит сотни объектов в массиве. И у этих объектов много столбцов.

Проблема в том, что может быть вложенный дополнительный столбец, например, в одном или двух объектах в массиве.

 [
...,
{"id":"QwerTy1", "field1":"smthng", "field2":{"nestedField1":"0", "EXTRA_FIELD": "EXTRA VALUE", "nestedField2":8}},
...,
]
 

И если я использую spark.read.json() , выведенная схема обобщается для всего массива. Это означает, что если только 1 или 2 объекта (из 1_000) имеют дополнительное поле, то схема выведет это поле для всего файла. И это не то, чего я хочу.

Есть ли способ, которым я могу вывести отдельную и точную схему для каждого объекта в массиве? Или, может быть, если не для каждого объекта, но, по крайней мере, для каждой строки, а не для всего файла?

И немного не по теме. Может быть, в spark вообще нет необходимости, если я просто хочу сохранить JSON-файл в hdfs в качестве паркетного файла?