Как объединить небольшие паркетные файлы в HIVE - PullRequest
1 голос
/ 24 июня 2019

Как объединить небольшие файлы паркета в HIVE, когда ниже на месте.

  • Разделы создаются динамически на таблице HIVE.
  • Стол ВНЕШНИЙ.

Решение До сих пор пробовал, но для файлов ORC с ошибкой: Для файла ORC я использовал нижеприведенную команду в цикле для всех значений раздела, и она отлично работает. Но данные теряются после конкатенации, что является ошибкой в ​​HIVE https://issues.apache.org/jira/browse/HIVE-17280

Я выполняю запрос HIVE в кластере EMR, который использует куст 2.3.3, и это не было исправлено до ул. 3.0.0

Команда Используется для достижения этой цели, но с файлом ORC. Мне нужно сделать это для паркетных файлов.

ALTER TABLE HIVE_DB.HIVE_TABLE_NM PARTITION(partition_field_nm ='${partition_value}') CONCATENATE;

используется для файла ORC.

Необходимо выполнить аналогичное объединение небольших файлов паркета в большие файлы.

1 Ответ

1 голос
/ 24 июня 2019

Слияние файлов паркета через Hive в настоящее время недоступно, насколько мне известно.Кроме того, «слияние паркетных инструментов» не рекомендуется, так как это может создать проблемы с данными / схемой.

Однако этого можно достичь с помощью Impala.

Если вы хотитеобъедините файлы в таблице по разделам, затем вы можете создать новую таблицу, содержащую только данные раздела из существующей таблицы, с большим количеством файлов в HDFS и после этого удалить из нее разделы.Шаги, как показано ниже,

Например,

CREATE TABLE tabA LIKE tabB;

INSERT INTO tabB SELECT * FROM tabA WHERE partition_key=1;

ALTER TABLE tabA DROP PARTITION (partition_key=1);

INSERT INTO tabA PARTITION(partition_key=1) select * from tabB;

DROP TABLE tabB; 

где, tabA - исходная таблица с большим количеством файлов паркета в HDFS, tabB - промежуточная таблица, созданная для объединения файлов паркета tabA

...