Hive: Распределить предложение не работает хорошо в агрегированном запросе - PullRequest
0 голосов
/ 11 октября 2018

Я использую улей на MRv2.Я писал запросы, которые содержат агрегатные функции.Тогда я подумал, что хочу манипулировать назначениями для редуктора.Поэтому я пытаюсь использовать предложение DISTRIBUTE.

Например, если я написал запрос, например SELECT byear, sex, count(*) FROM customers GROUP BY byear, sex DISTRIBUTE BY byear, sex, а число по годам равно 5 (2001, 2002, 2003, 2004, 2005), а значение по полу3 (мужчина, женщина, неизвестно), номер редуктора равен 5 * 3 = 15, и извлеченные данные присваиваются каждому редуктору, что соответствует годовому значению и полу.

Или Если я написал запрос наподобие SELECT byear, sex, count(*) FROM customers GROUP BY byear, sex DISTRIBUTE BY byear,тогда число редукторов будет 5.

Я ожидал такого поведения.Но в приведенных выше запросах число редуктора равно 1. Разве бессмысленно, если извлеченные данные достаточно малы?Или я ошибся при написании запроса?

Таблица клиентов содержит 1 000 000 кортежей и имеет размер 30 МБ.

добавление

1, я неправильно понял вычислениеМетод количества редуктора.Я проверил hive.exec.reducers.bytes.per.reducer и вычислил file size / hive.exec.reducers.bytes.per.reducer число собранных редукторов.Я думал, что предложение DISTRIBUTE удостоверяет, что данные будут назначаться каждому редуктору на основе атрибутов, которые записаны в предложении, однако номер редуктора не равен номеру типа значения.

2, я прочиталОБЪЯСНИТЕ результат, чтобы проверить эффект предложения DISTRIBUTE, но нет разницы в пересчете.

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