Я не могу понять, что делает это предложение DISTRIBUTE BY
в Hive. Я знаю определение, в котором говорится, что если у нас есть DISTRIBUTE BY (city)
, это отправит каждый город в другой reducer, но я не получаю того же самого. Рассмотрим данные следующим образом:
Скажем, у нас есть таблица с именем data со столбцами username и amount:
+----------+--------+
| username | amount |
+----------+--------+
| user_1 | 25 |
+----------+--------+
| user_1 | 53 |
+----------+--------+
| user_1 | 28 |
+----------+--------+
| user_1 | 50 |
+----------+--------+
| user_2 | 20 |
+----------+--------+
| user_2 | 50 |
+----------+--------+
| user_2 | 10 |
+----------+--------+
| user_2 | 5 |
+----------+--------+
Теперь, если я скажу -
SELECT username, SUM(amount) FROM data DISTRIBUTE BY (username)
Разве это не должно запускать 2 отдельных редуктора? Он все еще работает с одним редуктором, и я не знаю, почему. Я думал, что это может быть связано с кластеризацией в сегменты или разбиением на разделы, но я перепробовал все, и все равно работает один редьюсер. Кто-нибудь может объяснить, почему?