Я попытался создать внешнюю таблицу из файлов паркета s3 (созданных с помощью spark, сохраненных в s3) в Афине. Всякий раз, когда тип данных является десятичным или отметкой времени, после
select "column" from athena_table
данные не отображаются. Код, который я использовал для создания внешней таблицы, выглядит следующим образом
CREATE EXTERNAL TABLE IF NOT EXISTS tablename (
`date` timestamp,
`number` decimal(38, 0)
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
WITH SERDEPROPERTIES (
'serialization.format' = '1'
)
LOCATION 's3 path'
TBLPROPERTIES (
'has_encrypted_data'='true'
);
Что я пробовал:
- Заменить десятичное число (38, 0) в приведенном выше коде на двойное, не работает, в этом столбце ничего не отображается
- Заменить десятичное число (38, 0) или метку времени в указанном выше коде на строка, не работает, искаженный символ отображается
- Обновите тип данных в моем файле партера s3 в двух вышеуказанных форматах (двойной или строковый) и восстановите файл, не работает, ошибка
HIVE_BAD_DATA: тип поля 'число' поля FIXED_LEN_BYTE_ARRAY в паркете несовместим с типом double, определенным в схеме таблицы`