Используйте жидкую кластеризацию для таблиц

Метод "Liquid clustering" — это техника оптимизации макета данных, которая заменяет секционирование таблиц и ZORDER. Это упрощает управление таблицами и оптимизирует производительность запросов путем автоматической организации данных на основе ключей кластеризации.

В отличие от традиционного секционирования, можно переопределить ключи кластеризации без перезаписи существующих данных. Это позволяет макету данных развиваться вместе с изменением аналитических потребностей. Кластеризация liquid применяется как к потоковым таблицам, так и к материализованным представлениям.

Important

Кластеризация жидких данных доступна для таблиц Delta Lake и в открытой предварительной версии для управляемых таблиц Apache Iceberg. Для таблиц Delta Lake поддержка в статусе общего доступа доступна в Databricks Runtime 15.2 и выше. Databricks рекомендует использовать последнюю версию Databricks Runtime для оптимальной производительности. Для таблиц Apache Iceberg требуется среда выполнения Databricks 16.4 LTS и выше.

Когда следует использовать кластеризацию жидкости

Databricks рекомендует кластеризацию жидкости для всех новых таблиц, включая потоковые таблицы и материализованные представления. Следующие сценарии особенно полезны для кластеризации:

  • Запросы, которые фильтруют столбцы с высокой кардинальностью.
  • Таблицы с сильным перекосом данных.
  • Быстрорастущие таблицы, требующие усилий по обслуживанию и настройке.
  • Таблицы с требованиями параллельной записи.
  • Таблицы с различными или изменяющимися шаблонами доступа.
  • Таблицы, в которых типичный ключ раздела может возвращать результаты из слишком большого количества или слишком малого числа разделов.

Включение кластеризации жидкости

Вы можете включить кластеризацию жидкости в существующей непартиментной таблице или во время создания таблицы. Кластеризация несовместима с секционированием или ZORDER. Databricks рекомендует позволить платформе управлять всеми операциями по макету и оптимизации данных в вашей таблице. После включения liquid-кластеризации запустите OPTIMIZE задания для пошагового кластерирования данных. Узнайте , как активировать кластеризацию.

Создание таблиц с помощью кластеризации

Чтобы включить кластеризацию жидкости, добавьте фразу CLUSTER BY в инструкцию создания таблицы, как показано в приведенных ниже примерах. В Databricks Runtime 14.2 и более поздних версиях можно использовать API кадра данных и API DeltaTable в Python или Scala, чтобы включить кластеризацию жидкости для таблиц Delta Lake.

SQL

-- Create an empty Delta table with clustering on col0
CREATE TABLE table1(col0 INT, col1 string) CLUSTER BY (col0);

-- Create table from existing data with clustering
-- Note: CLUSTER BY must appear after table name, not in SELECT clause
CREATE TABLE table2 CLUSTER BY (col0)
AS SELECT * FROM table1;

-- Copy table structure including clustering configuration
CREATE TABLE table3 LIKE table1;

Python

# Create an empty Delta table with clustering on col0
(DeltaTable.create()
  .tableName("table1")
  .addColumn("col0", dataType = "INT")
  .addColumn("col1", dataType = "STRING")
  .clusterBy("col0")  # Single clustering key
  .execute())

# Create clustered table from existing DataFrame
df = spark.read.table("table1")
df.write.clusterBy("col0").saveAsTable("table2")

# Alternative: DataFrameWriterV2 API (:re[DBR] 14.2+)
df = spark.read.table("table1")
df.writeTo("table1").using("delta").clusterBy("col0").create()

Scala

// Create an empty Delta table with clustering on col0
DeltaTable.create()
  .tableName("table1")
  .addColumn("col0", dataType = "INT")
  .addColumn("col1", dataType = "STRING")
  .clusterBy("col0")
  .execute()

// Create clustered table from existing DataFrame
val df = spark.read.table("table1")
df.write.clusterBy("col0").saveAsTable("table2")

// Alternative: DataFrameWriterV2 API (:re[DBR] 14.2+)
val df = spark.read.table("table1")
df.writeTo("table1").using("delta").clusterBy("col0").create()

Important

При использовании API DataFrame для задания ключей кластеризации можно указать только столбцы кластеризации во время создания таблицы или при использовании режима overwrite (например, с операциями CREATE OR REPLACE TABLE). При использовании append режима невозможно изменить ключи кластеризации.

Чтобы изменить ключи кластеризации в существующей таблице при добавлении данных, используйте команды SQL ALTER TABLE для изменения конфигурации кластеризации отдельно от операций записи данных. См. раздел "Изменение ключей кластеризации".

В Databricks Runtime 16.0 и более поздних версиях можно создавать таблицы с поддержкой кластеризации жидкости с помощью операций записи структурированной потоковой передачи. Databricks рекомендует использовать Databricks Runtime 16.4 и выше для оптимальной производительности, как показано в следующих примерах:

SQL

CREATE TABLE table1 (
  col0 STRING,
  col1 DATE,
  col2 BIGINT
)
CLUSTER BY (col0, col1);

Python

(spark.readStream.table("source_table")
  .writeStream
  .clusterBy("column_name")
  .option("checkpointLocation", checkpointPath)
  .toTable("target_table")
)

Scala

spark.readStream.table("source_table")
  .writeStream
  .clusterBy("column_name")
  .option("checkpointLocation", checkpointPath)
  .toTable("target_table")

Warning

Таблицы Delta с включенной поддержкой жидкой кластеризации используют модуль записи Delta версии 7 и модуль чтения версии 3. Клиенты Delta, которые не поддерживают эти протоколы, не могут получить доступ к этим таблицам. Вы не можете понизить версию протокола таблицы. См. сведения о совместимости функций Delta Lake и протоколах.

Чтобы переопределить включение компонентов по умолчанию (например, векторы удаления), см. раздел "Переопределение функций по умолчанию" (необязательно).

Активировать на существующих таблицах

Включите кластеризацию жидкости в существующей непартиментной таблице Delta с помощью следующего синтаксиса:

-- Alter an existing table
ALTER TABLE <table_name>
CLUSTER BY (<clustering_columns>)

Для Apache Iceberg необходимо явно отключить векторы удаления и идентификаторы строк при включении кластеризации жидкости в существующей управляемой таблице Iceberg.

Note

Поведение по умолчанию не применяет кластеризацию к ранее записанным данным. Для принудительной перегруппировки используйте OPTIMIZE FULL или OPTIMIZE FULL WHERE <predicate>. См. статью "Принудительное перекластеривание".

Удаление ключей кластеризации

Чтобы удалить ключи кластеризации, используйте следующий синтаксис:

ALTER TABLE table_name CLUSTER BY NONE;

Выбор ключей кластеризации

Подсказка

Databricks рекомендует использовать автоматическую кластеризацию жидкости для поддерживаемых таблиц, которая интеллектуально выбирает ключи кластеризации на основе шаблонов запросов. См. автоматическая кластеризация жидкости.

Рекомендации по выбору ключей

При ручном указании ключей кластеризации выберите столбцы на основе столбцов, наиболее часто используемых в фильтрах запросов. Ключи кластеризации можно определить в любом порядке. Если два столбца очень коррелируются, необходимо включить только один из них в качестве ключа кластеризации.

Можно указать до четырех ключей кластеризации. Для небольших таблиц (менее 10 ТБ) использование дополнительных ключей кластеризации может снизить производительность при фильтрации по одному столбцу. Например, фильтрация с четырьмя ключами хуже, чем фильтрация с двумя ключами. Однако по мере увеличения размера таблицы эта разница в производительности становится незначительной для запросов с одним столбцом.

Ключи кластеризации должны быть столбцами с собранными статистическими данными. По умолчанию в таблице Delta сбор статистики производится для первых 32 столбцов. См. раздел "Указание столбцов статистики".

Поддерживаемые типы данных

Кластеризация поддерживает эти типы данных для кластеризации ключей:

  • Date
  • Timestamp
  • TimestampNTZ (Databricks Runtime 14.3 LTS и выше)
  • String
  • Целое число, Длинное, Короткое, Байт
  • Float (Число с плавующей запятой одинарной точности), Double (Число с плавующей запятой двойной точности), Decimal (Десятичное число)

Миграция с секционирования или порядка Z

Если вы преобразуете существующую таблицу, рассмотрите следующие рекомендации:

Текущий метод оптимизации данных Рекомендация по кластеризации ключей
Секционирование в стиле Hive Используйте столбцы секций в качестве ключей кластеризации.
Индексирование Z-порядка ZORDER BY Используйте столбцы в качестве ключей кластеризации.
Секционирование в стиле Hive и порядок Z Используйте как столбцы секционирования, так и ZORDER BY столбцы в качестве ключей кластеризации.
Созданные столбцы для уменьшения кардинальности (например, дата для метки времени) Используйте исходный столбец в качестве ключа кластеризации и не создавайте созданный столбец.

автоматическая кластеризация жидкости

В Databricks Runtime 15.4 LTS и более поздних версиях можно включить автоматическое жидкое кластеризование для управляемых Unity Catalog таблиц Delta. Автоматическое кластеризация жидкости позволяет Azure Databricks интеллектуально выбирать ключи кластеризации для оптимизации производительности запросов с помощью предложения CLUSTER BY AUTO.

Как работает автоматическая кластеризация жидкости

Автоматическая кластеризация жидкости обеспечивает интеллектуальную оптимизацию на основе шаблонов использования:

  • Требуется прогнозная оптимизация: автоматический выбор ключей и кластеризация операций выполняются асинхронно в качестве операции обслуживания. См прогнозную оптимизацию для управляемых таблиц каталога Unity.
  • Анализ рабочей нагрузки запросов: Azure Databricks анализирует историческую рабочую нагрузку запросов таблицы и определяет оптимальные столбцы для кластеризации.
  • Адаптация к изменениям. Если шаблоны запросов или распределения данных изменяются с течением времени, автоматическое кластеризация жидкости выбирает новые ключи для оптимизации производительности.
  • Cost-aware selection: Azure Databricks изменяет ключи кластеризации только в том случае, если прогнозируемая экономия от пропуска данных превышает затраты на кластеризацию данных.

Автоматическая кластеризация данных может не выбирать ключи по следующим причинам:

  • Таблица слишком мала, чтобы извлечь выгоду из объединения жидкостей.
  • Таблица уже имеет эффективную схему кластеризации либо из предыдущих вручную заданных ключей, либо из естественного порядка вставки, который соответствует шаблонам запросов.
  • В таблице нет частых запросов.
  • Вы не используете Databricks Runtime 15.4 LTS или более поздней версии.

Автоматическое кластеризация жидкости можно применять для всех управляемых таблиц каталога Unity независимо от характеристик данных и запросов. Эвристики решают, выгодно ли выбрать ключи кластеризации.

Совместимость версий среды выполнения Databricks

Таблицы можно считывать или записывать с поддержкой автоматического кластеризации из всех версий среды выполнения Databricks, поддерживающих кластеризацию жидкости. Однако выбор интеллектуального ключа зависит от метаданных, представленных в Databricks Runtime 15.4 LTS.

Используйте Databricks Runtime 15.4 LTS или более поздней версии, чтобы гарантировать, что автоматически выбранные ключи используют все ваши рабочие нагрузки и что эти рабочие нагрузки учитываются при выборе новых ключей.

Включение или отключение автоматической кластеризации жидкости

Чтобы включить или отключить автоматическую кластеризацию жидкости в новой или существующей таблице, используйте следующий синтаксис:

SQL

-- Create an empty table.
CREATE OR REPLACE TABLE table1(column01 int, column02 string) CLUSTER BY AUTO;

-- Enable automatic liquid clustering on an existing table,
-- including tables that previously had manually specified keys.
ALTER TABLE table1 CLUSTER BY AUTO;

-- Disable automatic liquid clustering on an existing table.
ALTER TABLE table1 CLUSTER BY NONE;

-- Disable automatic liquid clustering by setting the clustering keys
-- to chosen clustering columns or new columns.
ALTER TABLE table1 CLUSTER BY (column01, column02);

Если вы запускаете CREATE OR REPLACE table_name без указания CLUSTER BY AUTO, и таблица уже существует и для неё включена автоматическая жидкая кластеризация, настройка AUTO отключается, и столбцы кластеризации не сохраняются. Чтобы сохранить автоматическую кластеризацию жидкости и все ранее выбранные столбцы кластеризации, включите CLUSTER BY AUTO в инструкцию replace. При сохранении прогнозной оптимизации историческая нагрузка запросов для таблицы сохраняется, чтобы определить лучшие ключи кластеризации.

Python

df = spark.read.table("table1")
df.write
  .format("delta")
  .option("clusterByAuto", "true")
  .saveAsTable(...)

# Set clustering columns and auto to provide a hint for initial selection
df.write
  .format("delta")
  .clusterBy("clusteringColumn1", "clusteringColumn2")
  .option("clusterByAuto", "true")
  .saveAsTable(...)

# Using DataFrameWriterV2
df.writeTo(...).using("delta")
  .option("clusterByAuto", "true")
  .create()

# Set clustering columns and auto to provide a hint for initial selection
df.writeTo(...).using("delta")
  .clusterBy("clusteringColumn1", "clusteringColumn2")
  .option("clusterByAuto", "true")
  .create()

# Set clusterByAuto for streaming tables
spark.readStream.table("source_table")
  .writeStream
  .option("clusterByAuto", "true")
  .option("checkpointLocation", checkpointPath)
  .toTable("target_table")

# Specify a hint for clustering columns with both auto and columns
spark.readStream.table("source_table")
  .writeStream
 .clusterBy("column1", "column2")
  .option("clusterByAuto", "true")
  .option("checkpointLocation", checkpointPath)
  .toTable("target_table")

API Python доступен в Databricks Runtime 16.4 и выше. При совместном использовании .clusterBy.option('clusterByAuto', 'true)поведение выглядит следующим образом:

  • Если это задает автоматическую кластеризацию жидкости впервые, вручную введенные данные всегда принимаются во внимание, а столбцы кластеризации в .clusterBy задаются.
  • Если это уже таблица с автоматической кластеризацией жидкости, то подсказку с использованием .clusterBy можно принять один раз. Например, столбцы, указанные с помощью .clusterBy, задаются только в том случае, если в таблице ещё не установлены столбцы кластеризации.

Вы можете использовать Python только при создании или замене таблицы. Используйте SQL для изменения clusterByAuto состояния существующей таблицы.

Important

При использовании API clusterByAuto кадра данных параметр можно задать только при использовании overwrite режима. Нельзя задать clusterByAuto при использовании append режима. Это ограничение такое же, как и при настройке столбцов кластеризации вручную — параметры кластеризации можно настроить только во время создания таблицы или её замены в режиме overwrite.

В качестве обходного решения, если вы хотите изменить clusterByAuto состояние существующей таблицы при добавлении данных, используйте команды SQL ALTER TABLE для изменения конфигурации кластеризации отдельно от операций записи данных.

Проверьте, включена ли автоматическая кластеризация

Чтобы проверить, включена ли в таблице автоматическая кластеризация жидкости, используйте DESCRIBE TABLE или SHOW TBLPROPERTIES.

Если включена автоматическая кластеризация жидкости, свойству clusterByAuto задано значение true. В свойстве clusteringColumns показаны текущие столбцы кластеризации, которые были автоматически или вручную выбраны.

Limitations

Автоматическое кластеризация жидкости недоступна для Apache Iceberg.

Запись данных в кластеризованную таблицу

Для записи в кластеризованную Delta-таблицу необходимо использовать клиент для записи в Delta, поддерживающий все функции протокола записи Delta, используемые при динамической кластеризации. Для записи в кластеризованную таблицу Iceberg можно использовать Iceberg REST API каталога Unity. В Azure Databricks необходимо использовать Databricks Runtime 13.3 LTS и более поздних версий.

Операции, поддерживающие кластеризацию при записи

Операции, которые концентрируются при записи, включают следующие:

  • INSERT INTO операции
  • Выражения CTAS и RTAS
  • COPY INTO из формата Parquet
  • spark.write.mode("append")

Пороговые значения размера для кластеризации

Кластеризация при записи активируется только в том случае, если данные в транзакции соответствуют пороговой величине. Эти пороговые значения зависят от количества столбцов кластеризации и ниже для управляемых таблиц каталога Unity, чем другие таблицы Delta.

Количество столбцов кластеризации Пороговое значение для управляемых таблиц каталога Unity Пороговый размер для других таблиц Delta
1 64 МБ 256 МБ
2 256 МБ 1 ГБ
3 512 МБ 2 ГБ
4 1 ГБ 4 ГБ

Поскольку не все операции применяют динамическую кластеризацию, Databricks рекомендует часто выполнять OPTIMIZE, чтобы обеспечить эффективную кластеризацию всех данных.

Потоковая передача рабочих нагрузок

Структурированные рабочие нагрузки на потоковые данные поддерживают кластеризацию данных при записи при настройке spark.databricks.delta.liquid.eagerClustering.streaming.enabledtrue конфигурации Spark. Кластеризация для этих рабочих нагрузок активируется только в том случае, если по крайней мере одно из последних пяти обновлений потоковой передачи превышает пороговое значение размера из приведенной выше таблицы.

Как запустить кластеризацию

Прогнозная оптимизация автоматически выполняет OPTIMIZE команды для включенных таблиц. См прогнозную оптимизацию для управляемых таблиц каталога Unity. При использовании прогнозной оптимизации Databricks рекомендует отключить все запланированные OPTIMIZE задания.

Чтобы активировать кластеризацию, необходимо использовать Databricks Runtime 13.3 LTS или более поздней версии. Databricks рекомендует Databricks Runtime 17.2 и выше для повышения OPTIMIZE производительности в больших таблицах. Используйте команду OPTIMIZE на вашей таблице.

OPTIMIZE table_name;

Кластеризация данных является инкрементальной, то есть OPTIMIZE перезаписывает данные только тогда, когда это необходимо для размещения данных, которым требуется кластеризация. OPTIMIZE не перезаписывает файлы данных с ключами кластеризации, которые не соответствуют кластеризованным данным. См. статью "Принудительное перекластеривание".

Если вы не используете прогнозную оптимизацию, Databricks рекомендует планировать регулярные OPTIMIZE задания для кластеризации данных. Для таблиц с большим количеством обновлений или вставок Databricks рекомендует планировать задание OPTIMIZE с интервалом в один или два часа. Так как кластеризация жидкости увеличивается, большинство OPTIMIZE заданий для кластеризованных таблиц выполняются быстро.

Принудительное перекластерирование

В Databricks Runtime 16.0 и более поздних версиях можно принудительно выполнить повторение всех записей в таблице со следующим синтаксисом:

OPTIMIZE table_name FULL;

Important

При необходимости выполнение OPTIMIZE FULL перекластеризует все существующие данные. Для больших таблиц, которые ранее не были кластеризованы по указанным ключам, эта операция может занять несколько часов.

Запустите OPTIMIZE FULL при первом включении кластеризации или изменении ключей кластеризации. Если вы ранее выполнили OPTIMIZE FULL и не было изменений в ключах кластеризации, OPTIMIZE FULL выполняется так же, как и OPTIMIZE. В этом сценарии OPTIMIZE использует добавочный подход и перезаписывает только файлы, которые ранее не были сжаты. Всегда используйте OPTIMIZE FULL, чтобы убедиться, что макет данных отражает текущие ключи кластеризации.

Частичная перекластеризация

В Databricks Runtime 18.1 и более поздних версиях можно принудительно выполнить перекластеризацию для подмножества записей с помощью OPTIMIZE FULL WHERE <predicate>. Файл включается, если любая часть его диапазона перекрывается с предикатом. См. параметры.

OPTIMIZE events FULL WHERE event_date >= '2025-01-01';

Чтение данных из кластеризованной таблицы

Данные можно считывать в кластеризованной таблице Delta с помощью любого клиента Delta Lake, поддерживающего чтение векторов удаления. С помощью API REST каталога Iceberg можно считывать данные в кластеризованной таблице Iceberg. Жидкостная кластеризация повышает производительность запросов с помощью автоматического пропуска данных, когда фильтрация осуществляется по ключам кластеризации.

SELECT * FROM table_name WHERE cluster_key_column_name = "some_value";

Управление ключами кластеризации

Узнайте, как кластеризована таблица

Вы можете использовать команды DESCRIBE для просмотра ключей кластеризации таблицы, как в следующих примерах:

DESCRIBE TABLE table_name;

DESCRIBE DETAIL table_name;

Изменение ключей кластеризации

Ключи кластеризации для таблицы можно изменить в любое время, выполнив ALTER TABLE команду, как показано в следующем примере:

ALTER TABLE table_name CLUSTER BY (new_column1, new_column2);

При изменении ключей кластеризации последующие OPTIMIZE операции и операции записи используют новый подход кластеризации, но существующие данные не перезаписываются. Чтобы переписать существующие данные с помощью обновленных ключей кластеризации, см. раздел Принудительная рекластеризация.

Кроме того, можно отключить кластеризацию, задав ключи NONEследующим образом:

ALTER TABLE table_name CLUSTER BY NONE;

Установка ключей кластера на NONE не перезаписывает кластеризованные данные, но не позволяет будущим операциям OPTIMIZE использовать ключи кластера.

Использование мягкой кластеризации из внешнего движка

Вы можете включить кластеризацию жидкости на управляемых таблицах Iceberg из внешних двигателей Iceberg. Чтобы включить кластеризацию жидкости, укажите столбцы секций при создании таблицы. Каталог Unity интерпретирует секции как ключи кластеризации. Например, выполните следующую команду в OSS Spark:

CREATE OR REPLACE TABLE main.schema.icebergTable
PARTITIONED BY c1;

Чтобы отключить кластеризацию жидкости, выполните приведенные действия.

ALTER TABLE main.schema.icebergTable DROP PARTITION FIELD c2;

Чтобы изменить ключи кластеризации с помощью эволюции разделов Iceberg:

ALTER TABLE main.schema.icebergTable ADD PARTITION FIELD c2;

Если указать секцию с помощью преобразования контейнера, каталог Unity удаляет выражение и использует столбец в качестве ключа кластеризации:

CREATE OR REPLACE TABLE main.schema.icebergTable
PARTITIONED BY (bucket(c1, 10));

Совместимость таблиц с гибкой кластеризацией

В кластеризации Liquid используются функции таблицы Delta Lake, требующие определенных версий среды выполнения Databricks для чтения и записи. Таблицы, созданные с помощью жидкой кластеризации в Databricks Runtime 14.1 и более поздних версиях, используют контрольную точку V2 по умолчанию. С помощью контрольной точки V2 в Databricks Runtime версии 13.3 LTS и выше можно читать и писать таблицы. См. Checkpoint V2.

Чтобы поддерживать читателей, использующих Databricks Runtime версии от 12.2 LTS до 13.2, отключить контрольную точку V2 и понизить версию протокола таблицы. См. переход на классическую версию.

Переопределить включение функции по умолчанию (необязательно)

Вы можете переопределить включение функции разностной таблицы по умолчанию во время включения отказоустойчивой кластеризации. Это предотвращает обновление протоколов чтения и записи, связанных с этими функциями таблицы. Чтобы выполнить следующие действия, необходимо создать существующую таблицу:

  1. Используется ALTER TABLE для задания свойства таблицы, которое отключает одну или несколько функций. Например, чтобы отключить векторы удаления, выполните следующие действия:

    ALTER TABLE table_name SET TBLPROPERTIES ('delta.enableDeletionVectors' = false);
    
  2. Включите кластеризацию жидкости в таблице, выполнив следующие действия:

    ALTER TABLE <table_name>
    CLUSTER BY (<clustering_columns>)
    

В следующей таблице приведены сведения о функциях Delta, которые можно переопределить и как включение влияет на совместимость с версиями среды выполнения Databricks.

Функция Delta Совместимость среды выполнения Свойство для переопределения активации Влияние на кластеризацию жидкости при отключении
Векторы удаления Для чтения и записи требуется Databricks Runtime 12.2 LTS и более поздних версий. 'delta.enableDeletionVectors' = false Отключение векторов удаления отключает параллелизм на уровне строк, что делает транзакции и операции кластеризации более вероятными для конфликта. См. параллелизм на уровне строк.
DELETE, MERGEи UPDATE команды могут выполняться медленнее.
Отслеживание строк данных Записи требуют Databricks Runtime 13.3 LTS и более поздних версий. Можно считывать из любой версии Databricks Runtime. 'delta.enableRowTracking' = false Отключение отслеживания строк отключает параллелизм на уровне строк, что делает транзакции и операции кластеризации более вероятными для конфликта. См. параллелизм на уровне строк.
Контрольная точка версии 2 Для чтения и записи требуется Databricks Runtime 13.3 LTS и более поздних версий. 'delta.checkpointPolicy' = 'classic' Не влияет на поведение кластеризации жидкости. См. Checkpoint V2.

Limitations

  • Databricks Runtime 15.1 и ниже: кластеризация при записи не поддерживает исходные запросы, включающие фильтры, соединения или агрегаты.
  • Databricks Runtime 15.4 LTS и ниже: Вы не можете создать таблицу с включенной поддержкой liquid clustering при записи данных с использованием Structured Streaming. Структурированная потоковая передача можно использовать для записи данных в существующую таблицу с включенным кластеризированием жидкости.
  • Apache Iceberg версии 2. Параллелизм на уровне строк не поддерживается в управляемых таблицах Iceberg с Apache Iceberg версии 2, поскольку векторы удаления и отслеживание строк не поддерживаются в таблицах Iceberg.