hive
Форматы файлов в HIVE
Поиск…
SEQUENCEFILE
Храните данные в SEQUENCEFILE, если данные необходимо сжать. Вы можете импортировать текстовые файлы, сжатые Gzip или Bzip2, непосредственно в таблицу, хранящуюся как TextFile. Сжатие будет обнаружено автоматически, и файл будет распакован «на лету» во время выполнения запроса.
CREATE TABLE raw_sequence (line STRING)
STORED AS SEQUENCEFILE;
ORC
Формат файла Optimized Row Columnar (ORC) обеспечивает высокоэффективный способ хранения данных Hive. Он был разработан для преодоления ограничений других форматов файлов Hive. Использование файлов ORC повышает производительность, когда Hive считывает, записывает и обрабатывает данные. Файл ORC может содержать легкие индексы и фильтры цветения.
См. Https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC
ORC - рекомендуемый формат для хранения данных в дистрибутиве HortonWorks.
CREATE TABLE tab_orc (col1 STRING,
col2 STRING,
col3 STRING)
STORED AS ORC
TBLPROPERTIES (
"orc.compress"="SNAPPY",
"orc.bloom.filter.columns"="col1",
"orc.create.index" = "true"
)
Чтобы изменить таблицу, чтобы новые разделы таблицы были сохранены в виде файлов ORC:
ALTER TABLE T SET FILEFORMAT ORC;
Начиная с Hive 0.14, пользователи могут запросить эффективное слияние небольших файлов ORC вместе, выпустив команду CONCATENATE
на их таблицу или раздел. Файлы будут объединены на уровне полосы без ресериализатоина.
ALTER TABLE T [PARTITION partition_spec] CONCATENATE;
ПАРКЕТ
Формат столбчатого хранения паркета в Hive 0.13.0 и выше. Паркет построен с нуля со сложными вложенными структурами данных и использует алгоритм измельчения и сборки записей, описанный в документе Dremel. Мы считаем, что этот подход превосходит простое сглаживание вложенных пространств имен.
Паркет построен для поддержки очень эффективных схем сжатия и кодирования. Несколько проектов продемонстрировали влияние эффективности применения правильной схемы сжатия и кодирования к данным. Паркет позволяет использовать схемы сжатия для каждого столбца и надежно проверяется, чтобы добавить больше кодировок по мере их создания и реализации.
Рекомендуется использовать паркет. Формат файла с таблицами Impala в дистрибутивах Cloudera.
См .: http://parquet.apache.org/documentation/latest/
CREATE TABLE parquet_table_name (x INT, y STRING) STORED AS PARQUET;
AVRO
Файлы Avro поддерживаются в Hive 0.14.0 и более поздних версиях.
Avro - это схема удаленного вызова процедур и данных, разработанная в рамках проекта Hadoop от Apache. Он использует JSON для определения типов данных и протоколов и сериализует данные в компактном двоичном формате. Его основное использование - в Apache Hadoop, где он может обеспечить как формат сериализации для постоянных данных, так и формат проводов для связи между узлами Hadoop и клиентскими программами с услугами Hadoop.
Спецификация формата AVRO: https://avro.apache.org/docs/1.7.7/spec.html
CREATE TABLE kst
PARTITIONED BY (ds string)
STORED AS AVRO
TBLPROPERTIES (
'avro.schema.url'='http://schema_provider/kst.avsc');
Мы также можем использовать синтаксис ниже, не используя файл схемы.
CREATE TABLE kst (field1 string, field2 int)
PARTITIONED BY (ds string)
STORED AS AVRO;
В приведенных выше примерах Предложение STORED AS AVRO
эквивалентно:
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
Текстовый файл
TextFile - это формат файла по умолчанию, если параметр конфигурации hive.default.fileformat не имеет другого параметра. Мы можем создать таблицу на кусте, используя имена полей в нашем текстовом файле с разделителями. Например, наш файл csv содержит три поля (id, имя, зарплата), и мы хотим создать таблицу в улье под названием «сотрудники». Мы будем использовать приведенный ниже код для создания таблицы в улье.
CREATE TABLE employees (id int, name string, salary double) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
Теперь мы можем загрузить текстовый файл в нашу таблицу:
LOAD DATA LOCAL INPATH '/home/ourcsvfile.csv' OVERWRITE INTO TABLE employees;
Отображение содержимого нашей таблицы на улье, чтобы проверить, были ли данные успешно загружены:
SELECT * FROM employees;