Паркет, созданный с помощью фабрики данных Azure — не удается создать таблицу в Hive

#azure #hive #azure-data-factory #parquet

Вопрос:

Файл Parquet создается из фабрики данных Azure (действие копирования — копирование из Azure SQL в паркет в озере данных). Когда я пытаюсь прочитать тот же паркет из улья, он выдает ошибку, как org.apache.parquet.io.ParquetDecodingException: Не удается прочитать значение 0 в блоке.

Если вы создаете паркет с помощью Spark, вы можете установить Spark.sql.parquet.writeLegacyFormat=true, но как обрабатывать то же самое в фабрике данных Azure.

Грядет проблема с десятичными преобразованиями

Ответ №1:

Эта проблема вызвана различными соглашениями о паркете, используемыми в Hive и Spark.

Я предполагаю, что Hive угадывает десятичную дробь как фиксированные байты, но на самом деле Spark записывает их как INT32 для 1<= точность <=9 и INT 64 для 10 <= точность

Подобные ошибки были вызваны схемой с десятичным полем. Попробуйте использовать DOUBLE вместо ДЕСЯТИЧНОЙ дроби.