Тип данных приведения файлов Parquet в Apache Spark DataFrame - PullRequest
0 голосов
/ 30 октября 2018

У меня около 4 тысяч файлов Parquet, которые содержат большие вложенные объекты с ~ 250 различными полями, большинство из которых являются необязательными. Около половины файлов создаются старой схемой, которая содержит неправильный тип данных (int) для вложенного поля. Другая половина использовала правильную схему, которая использовала правильный тип данных (double) для этого вложенного поля.

Большинство инструментов (Spark, Hadoop, PrestoDB) не могут правильно проанализировать / прочитать это, поскольку целые числа не могут быть преобразованы в удвоенные значения. Как лучше всего прочитать все эти файлы и изменить значение / тип вложенного поля в DF?

Я пытался изменить это поле с помощью функции withColumn, но не смог добраться до вложенного поля и изменить его.

Пример вложенной структуры в JSON:

{
    "request": {
        "source": {
            "website": {
                "id": 1232,
                "category": 3.4
            }
        }
     },
    "event": {
    }
}

В этом случае поля «request», «event», «source» и «website» являются необязательными. Ключ «категория» имеет неправильный тип данных и должен быть преобразован / преобразован.

...