Как я могу эффективно хранить данные в Hive, а также хранить и извлекать сжатые данные в Hive? В настоящее время я храню его как TextFile. Я просматривал статью Bejoy и обнаружил, что сжатие LZO хорошо подходит для хранения файлов, а также его можно разделить.
У меня есть один запрос HiveQL Select, который генерирует некоторые выходные данные, и я сохраняю эти выходные данные где-то, чтобы одна из моих таблиц Hive (качества )могла использовать эти данные, чтобы я мог запрашивать эту quality
таблицу.
Ниже приведена таблица quality
, в которую я загружаю данные из приведенного ниже запроса SELECT, создавая раздел, который я использую для перезаписи таблицы quality
.
create table quality
(id bigint,
total bigint,
error bigint
)
partitioned by (ds string)
row format delimited fields terminated by '\t'
stored as textfile
location '/user/uname/quality'
;
insert overwrite table quality partition (ds='20120709')
SELECT id , count2, coalesce(error, cast(0 AS BIGINT)) AS count1 FROM Table1;
Итак, в настоящее время я храню его как TextFile
, должен ли я сделать это как Sequence file
и начать хранить данные в LZO compression format
? Или здесь тоже подойдет текстовый файл? Что касается запроса на выборку, я буду получать несколько ГБ данных, которые необходимо ежедневно загружать в таблицу качества.
Так какой способ лучше? Должен ли я сохранять выходные данные в формате TextFile или SequenceFile (со сжатием LZO ), чтобы при запросе таблицы качества Hive я быстрее получал результаты. Означает, что запросы выполняются быстрее.
Обновление:-
Что делать, если я храню как SequenceFile с блочным сжатием? Как показано ниже-
set mapred.output.compress=true;
set mapred.output.compression.type=BLOCK;
set mapred.output.compression.codec=org.apache.hadoop.io.compress.LzoCodec;
Мне нужно установить некоторые другие вещи, чтобы включить BLOCK Compression, помимо вышеперечисленного? А также я создаю таблицу в формате SequenceFile
Обновить еще раз
Я должен создать таблицу, как показано ниже? Или необходимо внести какие-то другие изменения, чтобы включить сжатие BLOCK с помощью Sequence File?
create table lipy
( buyer_id bigint,
total_chkout bigint,
total_errpds bigint
)
partitioned by (dt string)
row format delimited fields terminated by '\t'
stored as sequencefile
location '/apps/hdmi-technology/lipy'
;