Эффективное хранение данных в Hive

Как я могу эффективно хранить данные в 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'
;

6
задан arsenal 3 August 2012 в 17:31
поделиться