#amazon-web-services #pyspark #parquet #uint64
#amazon-веб-сервисы #pyspark #паркет #uint64
Вопрос:
Вот моя проблема с целыми числами без знака в нашей исходной базе данных (MySQL RDS):
Я использую AWS DMS для начальной загрузки исходной таблицы, а целевой является S3 (наша зона 1 нашего озера данных), сохраненная как parquet. Затем я могу сканировать его с помощью Glue и запрашивать таблицу в Athena. Здесь все хорошо
Затем я создал задание склеивания для чтения этого каталога данных Zone1 и вывода в другую корзину в S3 (наша Zone2). Однако задание на склеивание завершается с ошибкой: Тип паркета не поддерживается: INT64 (UINT_64)
Есть ли у кого-нибудь обходной путь, который я могу использовать в задании склеивания, чтобы «преобразовать» этот тип данных во что-то другое?
Комментарии:
1. Привет, Acumenus, и спасибо за ответ. Да, это был ответ, который я выяснил несколько месяцев назад и забыл обновить свой пост здесь. В DMS я использовал функцию «преобразование» и преобразовал ее в INT (или, возможно, это был INT8). В любом случае, теперь он попадает в Zone2 (S3) в виде паркета, который затем может быть обработан клеем. Работает как шарм
2. Я написал файлы parquet, содержащие столбцы UInt8, UInt16 и UInt32 (но еще не UInt64). Я успешно прочитал эти файлы parquet с помощью AWS Athena версии 2. Однако они были прочитаны как целочисленные столбцы со знаком. Все целочисленные типы данных AWS Athena выглядят подписанными, без неподписанных версий. Возможно, проблема, с которой вы столкнулись при работе со столбцами UInt, была ограничена AWS Athena v1, и, возможно, ее лучше решить в версии v2.
3. очень хорошее замечание @Acumenus. Я даже не думал о более новом движке Athena, и мой конвейер был написан в прошлом году до выпуска версии v2. Примечание: часть наших данных в конечном итоге попадает в Redshift / Spectrum, а Redshift не нравится тип данных Tinyint. Однако вместо использования «преобразований» в задании DMS при размещении данных в zone1 (как я сделал для столбцов UINT), я преобразовал их в smallint в задании склеивания из zone1 в zone2