Как исправить несогласованные схемы в разделе паркетных файлов с помощью Spark - PullRequest
0 голосов
/ 04 декабря 2018

Я новичок в спарке и столкнулся с проблемой при добавлении новых данных в раздел.Мой конвейер вводит ежедневные CSV-файлы в Azure Datalake (в основном HDFS), используя блоки данных.Я также выполняю несколько простых преобразований данных, удаляю дубликаты и т. Д. Однако я заметил, что иногда параметр inferSchema=True не всегда является лучшим и иногда создает несоответствия в схемах между разделенными файлами.Когда я иду читать все файлы:

df = sqlContext.read.parquet("path/to/directory")

У меня появляется:

Parquet column cannot be converted in file path/to/directory/file
Column: [Ndc], Expected: LongType, Found: BINARY

У меня есть тонна разделенных файлов, и я просматриваю каждый из них, чтобы найти,Схема та же, и исправление каждой из них, вероятно, неэффективно.Существует ли простой способ принудительного применения схемы, в которую будут преобразованы все файлы, или вам буквально приходится перебирать каждый файл паркета и изменять схему?

Использование spark 2.3.1

Спасибо.

1 Ответ

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

Вы можете попробовать два варианта.

  1. Вы можете объединить два файла с разными схемами "mergeSchema" https://spark.apache.org/docs/2.3.1/sql-programming-guide.html#schema-merging

  2. Цикл каждого отдельного файлаиспользуйте inferSchema при чтении, а затем явным образом приведите к общей схеме и выполните обратную запись в другое место

...