Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В каталоге Unity внешняя таблица хранит свои файлы данных в облачном хранилище объектов в клиенте облака. Каталог Unity продолжает управлять метаданными таблицы, обеспечивая полное управление данными во всех запросах. Однако он не управляет жизненным циклом данных, оптимизацией, местом хранения или макетом.
При определении внешней таблицы каталога Unity необходимо указать расположение хранилища. Это расположение является внешним расположением , зарегистрированным в каталоге Unity. При удалении внешней таблицы каталог Unity удаляет метаданные таблицы, но не удаляет базовые файлы данных.
В этой статье рассматриваются внешние таблицы каталога Unity. Внешние таблицы в хранилище метаданных Hive устаревшей версии имеют различное поведение. См. статью "Объекты базы данных в устаревшем хранилище метаданных Hive".
Когда следует использовать внешние таблицы
Databricks рекомендует использовать внешние таблицы для следующих вариантов использования:
- Необходимо зарегистрировать таблицу, поддерживаемую существующими данными, которые несовместимы с управляемыми таблицами каталога Unity.
- Кроме того, требуется прямой доступ к данным из клиентов, отличных от Databricks, которые не поддерживают другие шаблоны внешнего доступа. Привилегии каталога Unity не применяются при доступе пользователей к файлам данных из внешних систем. См. как получить доступ к данным Databricks с помощью внешних систем.
В большинстве случаев Databricks рекомендует использовать управляемые таблицы каталога Unity , чтобы воспользоваться преимуществами автоматической оптимизации таблиц, повышения производительности запросов и снижения затрат. Сведения о переносе внешних таблиц в управляемые таблицы см. в статье "Преобразование внешней таблицы в таблицу управляемого каталога Unity".
Это важно
Если вы обновляете метаданные внешней таблицы, используя клиент, не связанный с Databricks, или осуществляете доступ на основе пути внутри Databricks, состояние этих метаданных не синхронизируется автоматически с каталогом Unity. Databricks не рекомендует такие обновления метаданных, но если вы их выполняете, необходимо выполнить команду MSCK REPAIR TABLE <table-name> SYNC METADATA, чтобы привести схему в каталоге Unity в актуальное состояние. См. REPAIR TABLE.
Форматы файлов для внешних таблиц
Внешние таблицы могут использовать следующие форматы файлов:
- ДЕЛЬТА
- CSV
- JSON (JavaScript Object Notation)
- AVRO;
- PARQUET;
- ОРК (Оптическое Распознавание Символов)
- ТЕКСТ
Создание внешней таблицы
Внешние таблицы можно создавать с помощью команд SQL или операций записи DataFrame.
Перед началом работы
Перед созданием внешней таблицы необходимо сначала настроить внешнее расположение, которое предоставляет доступ к облачному хранилищу.
Дополнительные сведения о настройке внешних расположений см. в статье "Создание внешнего расположения для подключения облачного хранилища к Azure Databricks".
Чтобы создать внешнюю таблицу, необходимо выполнить следующие требования к разрешениям:
- Привилегия
CREATE EXTERNAL TABLEна внешнем расположении, которая предоставляет доступ кLOCATION, используемому внешней таблицей. - Разрешение
USE CATALOGна родительском каталоге таблицы. - Права доступа
USE SCHEMAна родительской схеме таблицы. - Права доступа
CREATE TABLEна родительской схеме таблицы.
Замечание
Если внешнее расположение 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. Используйте оператор LOCATION, чтобы указать внешний путь к хранилищу при создании таблиц при использовании DataFrame.
Следующие параметры синтаксиса SQL работают с операциями DataFrame:
Удалите внешнюю таблицу
Чтобы удалить таблицу, вы должны быть её владельцем или иметь привилегию MANAGE на таблице. Чтобы удалить внешнюю таблицу, выполните следующую команду SQL:
DROP TABLE IF EXISTS catalog_name.schema_name.table_name;
Каталог Unity не удаляет базовые данные в облачном хранилище при удалении внешней таблицы. Если необходимо удалить данные, связанные с таблицей, необходимо удалить непосредственно базовые файлы данных.
пример записной книжки: создание внешних таблиц
В следующем примере записной книжки можно создать каталог, схему и внешнюю таблицу, а также управлять разрешениями на них.