В своей работе я импортирую файлы AVRO в таблицы импала, копируя файлы в HDFS, а затем выполняю «обновление» в импале.
Но когда я хотел сделать это со сжатыми файлами, это не сработало.
Единственный документ, который я нашел о включении сжатия с таблицами avro, - это эта ссылка: http://www.cloudera.com/documentation/archive/impala/2-x/2-1-x/topics/impala_avro.html#avro_compression_unique_1.
Вот что я делаю:
Включите сжатие улья в оболочке улья:
куст> установить hive.exec.compress.output = true;
улей> установить avro.output.codec = bzip2;
Создайте таблицу:
СОЗДАТЬ ТАБЛИЦУ
log_bzip2
(timestamp
bigint COMMENT 'из десериализатора',appid
string COMMENT 'из десериализатора',clientid
string COMMENT 'из десериализатора',statkey
string COMMENT 'из десериализатора',expid
string COMMENT 'из десериализатора',modid
string COMMENT 'из десериализатора ',value
двойной КОММЕНТАРИЙ' из десериализатора ',summary
строка КОММЕНТАРИЙ' из десериализатора ',custom
строка КОММЕНТАРИЙ' из десериализатора ') РАЗДЕЛЕННЫЙ ПО (day
строка) ФОРМАТ СТРОКИ SERDE' org.apache.hadoop.hive.serde2.avro.AvroSerDe ' СОХРАНЯЕТСЯ КАК INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' TBLPROPERTIES ('hd : //szq2.appadhoc.com: 8020 / user / hive / log.avsc ');Загрузите сжатый файл AVRO в HDFS:
hdfs dfs -put log.2016-03-07.1457184357726.avro.bz2 /user/hive/warehouse/adhoc_data_fast.db/log_bzip2/2016-03-07
Добавьте раздел и обновите в оболочке Impala:
изменить таблицу log_bzip2 добавить раздел (day = "2016-03-07") location '/user/hive/warehouse/adhoc_data_fast.db/log_bzip2/2016-03-07/';
обновить log_bzip2;
Запросить, но не работать:
выберите * из log_bzip2 limit 10; Запрос: выберите * from log_bzip2 limit 10
ПРЕДУПРЕЖДЕНИЯ: недопустимый заголовок AVRO_VERSION_HEADER: '42 5a 68 39 '
Как я могу это сделать правильно? Спасибо!