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


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

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

Внешние таблицы хранят данные в каталоге в облачном хранилище объектов в вашем облачном клиенте. При определении внешней таблицы необходимо указать расположение хранилища. При удалении внешней таблицы файлы данных не удаляются.

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

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

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

Привилегии каталога Unity не применяются при доступе пользователей к файлам данных из внешних систем.

В этой статье рассматриваются внешние таблицы каталога Unity. Внешние таблицы в хранилище метаданных Hive устаревшей версии имеют различное поведение. См. статью "Объекты базы данных в устаревшем хранилище метаданных Hive".

Это важно

Если вы обновляете метаданные внешней таблицы, используя клиент, не связанный с Databricks, или осуществляете доступ на основе пути внутри Databricks, состояние этих метаданных не синхронизируется автоматически с каталогом Unity. Databricks не рекомендует такие обновления метаданных, но если вы их выполняете, необходимо выполнить команду MSCK REPAIR TABLE <table-name> SYNC METADATA, чтобы привести схему в каталоге Unity в актуальное состояние. См. REPAIR TABLE.

Форматы файлов для внешних таблиц

Внешние таблицы могут использовать следующие форматы файлов:

  • ДЕЛЬТА
  • CSV
  • JSON (JavaScript Object Notation)
  • AVRO;
  • PARQUET;
  • ОРК (Оптическое Распознавание Символов)
  • ТЕКСТ

Создание внешней таблицы

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

Прежде чем начать

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

  • Привилегия CREATE EXTERNAL TABLE на внешнем расположении, которая предоставляет доступ к LOCATION, используемому внешней таблицей.
  • Права доступа USE SCHEMA на родительской схеме таблицы.
  • Разрешение USE CATALOG на родительском каталоге таблицы.
  • Права доступа CREATE TABLE на родительской схеме таблицы.

Дополнительные сведения о настройке внешних расположений см. в статье "Создание внешнего расположения для подключения облачного хранилища к Azure Databricks".

Замечание

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

Примеры команд SQL

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

В следующих примерах замените значения заполнителей:

  • <catalog>: имя каталога, содержащего таблицу.
  • <schema>: имя схемы, содержащей таблицу.
  • <table-name>: это имя для таблицы.
  • <column-specification>: имя и тип данных для каждого столбца.
  • <bucket-path>: путь к контейнеру облачного хранилища, в котором будет создана таблица.
  • <table-directory>: каталог, в котором будет создана таблица. Используйте уникальный каталог для каждой таблицы.

ADLS

CREATE TABLE <catalog>.<schema>.<table-name>
(
  <column-specification>
)
LOCATION 'abfss://<bucket-path>/<table-directory>';

S3

CREATE TABLE <catalog>.<schema>.<table-name>
(
  <column-specification>
)
LOCATION 's3://<bucket-path>/<table-directory>';

Дополнительные сведения о параметрах создания таблиц см. в CREATE TABLE.

Операции записи кадра данных

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

Удаление внешней таблицы

Чтобы удалить таблицу, вы должны быть её владельцем или иметь привилегию MANAGE на таблице. Чтобы удалить внешнюю таблицу, выполните следующую команду SQL:

DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

Каталог Unity не удаляет базовые данные в облачном хранилище при удалении внешней таблицы. Если необходимо удалить данные, связанные с таблицей, необходимо удалить непосредственно базовые файлы данных.

пример записной книжки: создание внешних таблиц

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

Создайте и управляйте внешней таблицей в записной книжке каталога Unity

Получите ноутбук