Hive не создает отдельных каталогов для перекошенной таблицы - PullRequest
0 голосов
/ 07 октября 2019

Моя версия улья - 1.2.1. Я пытаюсь создать перекос таблицы, но она явно не работает. Вот мой скрипт создания таблицы: -

CREATE EXTERNAL TABLE IF NOT EXISTS mydb.mytable
(
country string,
payload string
)
PARTITIONED BY (year int,month int,day int,hour int)
SKEWED BY (country) on ('USA','Brazil') STORED AS DIRECTORIES
STORED AS TEXTFILE;


INSERT OVERWRITE TABLE mydb.mytable PARTITION(year = 2019, month = 10, day=05, hour=18)
SELECT country,payload FROM mydb.mysource;

Запрос на выборку возвращает названия стран и некоторые связанные строковые данные (полезная нагрузка). Таким образом, исходя из того, как я указал перекос в столбце «страна», я ожидал, что оператор вставки вызовет создание отдельных каталогов для США и Бразилии (запрос на выборку возвращает достаточно строк со страной, такой как США и Бразилия), но это явноне случилосьЯ вижу, что куст создал каталог с именем ' HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME ', и все значения были помещены в один файл в этом каталоге. Предполагается, что перекошенная таблица отправляет только строки со значениями по умолчанию (не указанными в операторе создания таблицы) в общий каталог (как, по-видимому, и представляет собой HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME) и должна создавать выделенные каталоги для строк с перекошенными значениями. Но вместо этого все идет в каталог по умолчанию, а другой каталог даже не создается. Нужно ли мне переключать какие-либо параметры улья, чтобы эта штука работала?

1 Ответ

0 голосов
/ 07 октября 2019

Похоже на старую ошибку, еще не похоже, что она исправлена. https://issues.apache.org/jira/browse/HIVE-13697. По существу, когда Hive хранит эти значения асимметрии, указанные при создании таблицы, они преобразуются в нижний регистр перед сохранением в метастазах. Вот почему пока что обходной путь - преобразовать регистр в операторе выбора, чтобы он перешел к правильному сегменту. Я проверил это и так оно работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...