Поделиться через


Работа с внешними таблицами

Внешние таблицы, иногда называемые федеративные таблицы, являются таблицами, зарегистрированными с помощью каталога Unity в составе внешнего каталога. Внешние таблицы содержат данные и метаданные, управляемые внешними системами, и каталог Unity Catalog добавляет управление данными для выполнения запросов к этим таблицам.

Azure Databricks поддерживает следующие методы регистрации внешних таблиц:

  • Федерация запросов использует безопасные подключения JDBC для объединения с внешними системами данных, такими как PostgreSQL и MySQL.
  • Федерация каталогов подключает внешние каталоги, такие как хранилище метаданных Hive или Каталог Snowflake Horizon, для запроса данных непосредственно в хранилище файлов.

Important

Для обратной совместимости с устаревшими рабочими нагрузками Apache Spark и Azure Databricks внешние таблицы в федеративном хранилище метаданных Hive возвращают метаданные из хранилища метаданных Hive, включая, является ли таблица управляемой таблицей Hive или внешней таблицей Hive.

Зачем использовать внешнюю таблицу?

Внешние таблицы обеспечивают гибкость при интеграции Azure Databricks с существующими системами данных или миграции из устаревших систем.

Многие внешние таблицы служат временным решением для прямого доступа к данным, не управляемым Azure Databricks, так как они предоставляют быстрое решение без необходимости миграции данных или рефакторинг кода для вышестоящих рабочих процессов ETL. Databricks рекомендует переносить наборы данных, которые управляют рабочими нагрузками или часто запрашиваются в управляемые таблицы каталога Unity, так как управляемые таблицы обеспечивают лучшую производительность и имеют множество встроенных оптимизаций. См. раздел "Преобразование внешней таблицы в управляемую таблицу каталога Unity".

Федерация запросов предоставляет бесплатное решение для загрузки данных из внешних систем данных, не поддерживаемых Lakeflow Connect. Databricks рекомендует использовать материализованные представления для репликации внешних таблиц в каталог Unity. Смотрите Загрузка данных из внешних таблиц с материализованными представлениями.

Создание или запись в внешние таблицы

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

Хотя внешние таблицы доступны только для чтения, в поле "Обновлено" отображается пользователь, который активировал последнее обновление метаданных. Azure Databricks автоматически обновляет метаданные внешней таблицы во время запросов при обнаружении устаревших метаданных. В результате в поле "Обновлено" отображается current_user тот, кто выполнил запрос, даже если этот пользователь не изменял исходные данные.

Azure Databricks не управляет метаданными, данными или семантикой для записи в внешние таблицы. Внешние таблицы могут быть подкреплены форматом, совместимым с ACID, например Delta Lake или Apache Iceberg, но внешние таблицы не предоставляют транзакционные гарантии управляемых таблиц каталога Unity.

Большинство оптимизаций в Azure Databricks, направленных на повышение производительности запросов, увеличение скорости записи, пропуск данных и выполнение запросов только к метаданным, требуют Unity Catalog. Databricks рекомендует сравнивать производительность запросов чтения и записи между внешними таблицами и управляемыми таблицами каталога Unity, используя последнюю версию среды выполнения Databricks для оценки задержек и различий затрат. См. таблицы под управлением каталога Unity в Azure Databricks для Delta Lake и Apache Iceberg.