Я использую улей на 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, но нет разницы в пересчете.