HIVE: создание пустых корзин после разбиения на разделы в HDFS

Я пытался создать разделы и ведра с помощью HIVE.

Для настройки некоторых свойств:

set hive.enforce.bucketing = true;
SET hive.exec.dynamic.partition = true;
SET hive.exec.dynamic.partition.mode = nonstrict;

Ниже приведен код для создания таблицы:

CREATE TABLE transactions_production
( id string,
dept string,
category string,
company string,
brand string,
date1 string,
productsize int,
productmeasure string,
purchasequantity int,
purchaseamount double)
PARTITIONED BY (chain string) clustered by(id) into 5 buckets
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

Ниже приведен код для вставки данных в таблицу:

INSERT OVERWRITE TABLE transactions_production PARTITION (chain)
select id, dept, category, company, brand, date1, productsize, productmeasure,
purchasequantity, purchaseamount, chain from transactions_staging;

Что пошло не так:

Разделы и корзины создаются в HDFS, но данные присутствуют только в 1-й корзине всех разделов; все остальные ведра пусты.

Пожалуйста, дайте мне знать, что я сделал не так и как решить эту проблему.


person user182944    schedule 15.10.2015    source источник


Ответы (1)


При использовании сегментирования Hive предлагает хэш кластеризованного по значению (здесь вы используете идентификатор) и разбивает таблицу на множество плоских файлов внутри разделов.

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

Если у вас нет значений, которые можно было бы сопоставить с сегментами, кроме первого, все эти плоские файлы будут пустыми.

person madhu    schedule 15.10.2015