Перейти к основному содержимому

Поддержка функций: Распределение данных

Этот документ описывает функции партиционирования и бакетирования, поддерживаемые Selena.

Поддерживаемые типы таблиц

  • Бакетирование

    Hash Bucketing поддерживается во всех типах таблиц. Random Bucketing (начиная с v3.1) поддерживается только в таблицах Duplicate Key.

  • Партиционирование

    Expression Partitioning (начиная с v3.1), Range Partitioning и List Partitioning (начиная с v3.1) поддерживаются во всех типах таблиц.

Бакетирование

ФункцияКлючевой моментСтатус поддержкиПримечание
Стратегия бакетированияHash BucketingДа
Random BucketingДа (v3.1+)Random Bucketing поддерживается только в таблицах Duplicate Key.
Начиная с v3.2, Selena поддерживает динамическое изменение количества tablet для создания в соответствии с информацией о кластере и размером данных.
Тип данных Bucket KeyDate, Integer, StringДа
Количество бакетовАвтоматическая установка количества бакетовДа (v3.0+)Автоматически определяется количеством узлов BE или объемом данных самой большой исторической партиции.
Логика была отдельно оптимизирована для партиционированных и непартиционированных таблиц в более поздних версиях.
Динамическое увеличение количества бакетов для Random BucketingДа (v3.2+)

Партиционирование

ФункцияКлючевой моментСтатус поддержкиПримечание
Стратегия партиционированияExpression PartitioningДа (v3.1+)
  • Включая партиционирование на основе выражения временной функции (с v3.0) и партиционирование на основе выражения столбца (с v3.1)
  • Поддерживаемые временные функции: date_trunc, time_slice
Range PartitioningДа (v3.2+)Начиная с v3.3.0, три специфические временные функции могут использоваться для Partition Keys: from_unixtime, from_unixtime_ms, str2date, substr/substring.
List PartitioningДа (v3.1+)
Тип данных Partition KeyDate, Integer, BooleanДа
StringДа
  • Только Expression Partitioning и List Partitioning поддерживают Partition Key типа String.
  • Range Partitioning не поддерживает Partition Key типа String. Необходимо использовать str2date для преобразования столбца в типы date.

Различия между стратегиями партиционирования

Expression PartitioningRange PartitioningList Partitioning
Партиционирование на основе выражения временной функцииПартиционирование на основе выражения столбца
Тип данныхDate (DATE/DATETIME)
  • String (кроме BINARY)
  • Date (DATE/DATETIME)
  • Integer и Boolean
  • String (кроме BINARY) [1]
  • Date или timestamp [1]
  • Integer
  • String (кроме BINARY)
  • Date (DATE/DATETIME)
  • Integer и Boolean
Поддержка нескольких Partition Keys/ (Поддерживает только один Partition Key типа date)ДаДаДа
Поддержка значений Null для Partition KeysДа/ [2]Да/ [2]
Ручное создание партиций перед загрузкой данных/ [3]/ [3]
  • Да, если партиции создаются вручную пакетно
  • Нет, если принята стратегия динамического партиционирования
Да
Автоматическое создание партиций во время загрузки данныхДаДа//
примечание
  • [1]: Необходимо использовать from_unixtime, str2date или другие временные функции для преобразования столбца в типы date.
  • [2]: Значения Null будут поддерживаться в Partition Keys для List Partitioning начиная с v3.3.3.
  • [3]: Партиции создаются автоматически.

Для подробного сравнения между List Partitioning и Expression Partitioning обратитесь к Сравнение между list partitioning и expression partitioning.