Я создал файл паркета, а затем я пытаюсь импортировать его в таблицу Impala.Impala + паркет файл
Я создал таблицу, как показано ниже:
CREATE EXTERNAL TABLE `user_daily` (
`user_id` BIGINT COMMENT 'User ID',
`master_id` BIGINT,
`walletAgency` BOOLEAN,
`zone_id` BIGINT COMMENT 'Zone ID',
`day` STRING COMMENT 'The stats are aggregated for single days',
`clicks` BIGINT COMMENT 'The number of clicks',
`impressions` BIGINT COMMENT 'The number of impressions',
`avg_position` BIGINT COMMENT 'The average position * 100',
`money` BIGINT COMMENT 'The cost of the clicks, in hellers',
`web_id` BIGINT COMMENT 'Web ID',
`discarded_clicks` BIGINT COMMENT 'Number of discarded clicks from column "clicks"',
`impression_money` BIGINT COMMENT 'The cost of the impressions, in hellers'
)
PARTITIONED BY (
year BIGINT,
month BIGINT
)
STORED AS PARQUET
LOCATION '/warehouse/impala/contextstat.db/user_daily/';
Затем я скопировать файлы там с этой схемой:
parquet-tools schema user_daily/year\=2016/month\=8/part-r-00001-fd77e1cd-c824-4ebd-9328-0aca5a168d11.snappy.parquet
message spark_schema {
optional int32 user_id;
optional int32 web_id (INT_16);
optional int32 zone_id;
required int32 master_id;
required boolean walletagency;
optional int64 impressions;
optional int64 clicks;
optional int64 money;
optional int64 avg_position;
optional double impression_money;
required binary day (UTF8);
}
А потом, когда я пытаюсь посмотреть записи с
SELECT * FROM user_daily;
I get
File 'hdfs://.../warehouse/impala/contextstat.db/user_daily/year=2016/month=8/part-r-00000-fd77e1cd-c824-4ebd-9328-0aca5a168d11.snappy.parquet'
has an incompatible Parquet schema for column 'contextstat.user_daily.user_id'.
Column type: BIGINT, Parquet schema:
optional int32 user_id [i:0 d:1 r:0]
Вы знаете, как решить эту проблему? Я думаю, что BIGINT такой же, как int_32. Должен ли я менять схему таблицы или генерировать паркетные файлы?
К сожалению, этот способ решения не является тем, что мне нужно. Существует определенная таблица со структурой выше, и я хотел бы придерживаться решения, где я меняю паркетные файлы. BTW: Я пытаюсь ... возникает следующая ошибка: 'ERROR: AnalysisException: Неподдерживаемый тип логического паркета INT_16 (примитивный тип - INT32) для поля web_id' – United121
Сообщение об ошибке показывает, что нет типа, который вы могли бы указать в определении таблицы который будет совместим с тем, что содержит файл Parquet. Если вы хотите придерживаться определения таблицы и изменить схему Паркета, просто измените все экземпляры 'int32' на' int64' и удалите часть '(INT_16)'. – Zoltan
Но как я могу удалить часть '(INT_16)' из этой схемы? Он отображается после вызова 'parquet-tools scheme' и описывает уже существующий файл? Есть ли способ изменить его в уже существующем файле? – United121