Как исправить несогласованные схемы в разделе паркетных файлов с помощью Spark
Я новичок в спарке и столкнулся с проблемой при добавлении новых данных в раздел. Мой конвейер вводит ежедневные 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
У меня есть тонна разбитых на разделы файлов, и я просматриваю каждый из них, чтобы определить, совпадает ли схема, и исправление каждого из них, вероятно, неэффективно. Существует ли простой способ применения схемы, в которую будут преобразованы все файлы, или вам буквально приходится перебирать каждый файл паркета и изменять схему?
Использование искры 2.3.1
Благодарю.
1 ответ
Вы можете попробовать два варианта.
У вас есть опция "mergeSchema" для объединения двух файлов с разными схемами https://spark.apache.org/docs/2.3.1/sql-programming-guide.html
Цикл каждого отдельного файла, используйте inferSchema при чтении, а затем явно приведите к общей схеме и выполните обратную запись в другое место