Hive создает сегменты на основе значений, выбранных пользователем при создании таблицы. И куст хранит данные внутри каждого сегмента на основе значения столбца ha sh, которое вы можете представить как
hash_function (bucketing_col_value) mod num_buckets
, поэтому в вашем в этом случае это будет что-то вроде
bucketing_col_value mod num_buckets
, исходя из того, что все записи с одинаковым значением ha sh будут go в одном разделе. Допустим, ваши столбцы-темы имеют 20 различных значений от 1 до 20. Итак,
1 mod 6 = 1 = will go in 1st bucket
2 mod 6 = 2 = will go in 2nd bucket
3 mod 6 = 3 = will go in 3rd bucket
4 mod 6 = 4 = will go in 4th bucket
5 mod 6 = 5 = will go in 5th bucket
6 mod 6 = 6 = will go in 6th bucket
7 mod 6 = 1 = will go in 1st bucket
8 mod 6 = 2 = will go in 2nd bucket
.
.
.
So on..
, поэтому в соответствии с вашим вопросом оба случая выполняются в случае с разбивкой
1st: Bucket будет сгруппирован все одинаковое значение
Да, поскольку данные с одинаковым значением будут иметь одинаковое значение ha sh, что означает, что они будут go в одних и тех же сегментах
2nd: Bucket будет сгруппируйте данные на основе функции Ha sh
, как я показал ранее, сегменты данных будут делиться на основе значения данных ha sh.
, если вы заметили на этапе загрузки данных в вашем запросе количество редукторов такое же, как количество сегментов в целевой таблице.
Надеюсь, теперь вы все ясно