Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Автозагрузчик может безопасно загружать данные из внешних расположений, настроенных с помощью Unity Catalog. Дополнительные сведения о безопасном подключении хранилища к каталогу Unity см. в статье "Подключение к облачному хранилищу объектов" с помощью каталога Unity. Автозагрузчик использует структурированную потоковую передачу для добавочной обработки; Рекомендации и ограничения см. в разделе Использование каталога Unity с структурированной потоковой передачей.
Примечание.
В Databricks Runtime 11.3 LTS и более поздних версиях можно использовать автозагрузчик с стандартными или выделенными режимами доступа (ранее общими и однопользовательскими режимами доступа).
Режим перечисления каталогов поддерживается по умолчанию.
Указание расположений для ресурсов автозагрузчика для каталога Unity
Модель безопасности каталога Unity предполагает, что все расположения хранилища, на которые ссылается рабочая нагрузка, будут управляться каталогом Unity. Databricks рекомендует всегда хранить сведения о контрольных точках и эволюции схемы в местах хранения, управляемых каталогом Unity. Каталог Unity не позволяет размещать файлы контрольных точек или автоопределения и эволюции схемы в каталоге таблицы.
Прием данных из облачного хранилища с помощью каталога Unity
В следующих примерах предполагается, что пользователь, выполняющий скрипт, имеет READ FILES права на внешнее расположение, привилегии владельца в целевых таблицах, а также следующие конфигурации и полномочия.
Примечание.
Azure Data Lake Storage — это единственный тип хранилища Azure, поддерживаемый каталогом Unity.
| Место хранения | Грант |
|---|---|
abfss://autoloader-source@<storage-account>.dfs.core.windows.net/json-data |
READ FILES |
abfss://dev-bucket@<storage-account>.dfs.core.windows.net |
READ FILES, , WRITE FILESCREATE TABLE |
Используйте автозагрузчик, чтобы загрузить данные в управляемую таблицу каталога Unity
В следующих примерах показано, как использовать автозагрузчик для приема данных в управляемую таблицу каталога Unity.
Python
checkpoint_path = "abfss://dev-bucket@<storage-account>.dfs.core.windows.net/_checkpoint/dev_table"
(spark.readStream
.format("cloudFiles")
.option("cloudFiles.format", "json")
.option("cloudFiles.schemaLocation", checkpoint_path)
.load("abfss://autoloader-source@<storage-account>.dfs.core.windows.net/json-data")
.writeStream
.option("checkpointLocation", checkpoint_path)
.trigger(availableNow=True)
.toTable("dev_catalog.dev_database.dev_table"))
SQL
CREATE OR REFRESH STREAMING TABLE dev_catalog.dev_database.dev_table
AS SELECT * FROM STREAM read_files(
'abfss://autoloader-source@<storage-account>.dfs.core.windows.net/json-data',
format => 'json'
);
Когда вы используете read_files в инструкции CREATE STREAMING TABLE в конвейерах Lakeflow, местоположения контрольных точек и схем управляются автоматически.
Используйте Auto Loader для загрузки данных во внешнюю таблицу Unity Catalog
Чтобы сохранить данные в определенном расположении хранилища, используйте внешнюю таблицу каталога Unity вместо управляемой таблицы. Например, используйте внешнюю таблицу для совместного использования данных с клиентами, отличными от Databricks, или для регистрации существующих данных. При использовании внешних таблиц необходимо задать путь к хранилищу. См. статью " Работа с внешними таблицами".
Чтобы использовать Auto Loader с внешней таблицей Unity Catalog, сначала зарегистрируйте таблицу с помощью CREATE TABLE ... LOCATION, а затем выполняйте потоковую запись в неё по имени. Местоположение таблицы должно быть внутри внешнего расположения, для которого у вас есть CREATE EXTERNAL TABLE разрешения. Расположение контрольной точки также должно находиться во внешнем расположении, управляемом каталогом Unity. Используйте отдельный путь от данных таблицы.
checkpoint_path = "abfss://dev-bucket@<storage-account>.dfs.core.windows.net/_checkpoint/dev_table"
table_path = "abfss://dev-bucket@<storage-account>.dfs.core.windows.net/external/dev_table"
# One-time: register the external table in UC.
spark.sql(f"""
CREATE TABLE IF NOT EXISTS dev_catalog.dev_database.dev_table
USING DELTA
LOCATION '{table_path}'
""")
(spark.readStream
.format("cloudFiles")
.option("cloudFiles.format", "json")
.option("cloudFiles.schemaLocation", checkpoint_path)
.load("abfss://autoloader-source@<storage-account>.dfs.core.windows.net/json-data")
.writeStream
.option("checkpointLocation", checkpoint_path)
.trigger(availableNow=True)
.toTable("dev_catalog.dev_database.dev_table"))