Impala - преобразовать существующую таблицу в формат паркета

У меня есть таблица с разделами, и я использую файлы avro или текстовые файлы для создания и вставки в таблицу.

Как только стол будет готов, есть ли способ превратить его в паркет? Я имею в виду, что я знаю, что мы могли бы сказать CREATE TABLE default.test( name_id STRING) PARTITIONED BY ( year INT, month INT, day INT ) STORED AS PARQUET изначально при создании самой таблицы.
В моем случае использования мне сначала придется использовать текстовые файлы. Это потому, что я хочу избежать создания нескольких файлов внутри папок разделов каждый раз, когда я вставляю или обновляю. В моей таблице очень много вставок и обновлений, и это приводит к падению производительности. Есть ли способ конвертировать в паркет после создания таблицы и вставки данных?


person user1189851    schedule 14.10.2014    source источник


Ответы (1)


Вы можете создать таблицу своих данных в hdfs, которая может храниться в текстовом, avro или любом другом формате.

Затем вы можете создать другую таблицу, используя:

CREATE TABLE x_parquet LIKE x_non_parquet STORED AS PARQUET;

Затем вы можете установить сжатие на что-то вроде snappy или gzip:

SET PARQUET_COMPRESSION_CODEC=snappy;

Затем вы можете получить данные из непаркетной таблицы и вставить их в новую паркетную таблицу:

INSERT INTO x_parquet select * from x_non_parquet;

Теперь, если вы хотите сэкономить место и избежать путаницы, я бы автоматизировал это для любого приема данных, а затем удалил исходный формат без паркета. Это поможет вашим запросам выполняться быстрее, а ваши данные будут занимать меньше места.

person Community    schedule 22.10.2014
comment
CREATE TABLE x_parquet LIKE x_non_parquet STORED AS PARQUET; не работает в улье 0.14 - person pratim_b; 03.11.2016