Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Auto Loader kan veilig gegevens opnemen van externe locaties die zijn geconfigureerd met Unity Catalog. Zie Connect to cloud object storage using Unity Catalog (Verbinding maken met cloudobjectopslag met behulp van Unity Catalog) voor meer informatie over het veilig verbinden van opslag met Unity Catalog. Automatisch laden is afhankelijk van Structured Streaming voor incrementele verwerking; Zie Unity Catalog gebruiken met structured streaming voor aanbevelingen en beperkingen.
Notitie
In Databricks Runtime 11.3 LTS en hoger kunt u Auto Loader gebruiken met standaard- of toegewezen toegangsmodi (voorheen gedeelde en modus voor toegang voor één gebruiker).
De weergavemodus voor directory's wordt standaard ondersteund.
Locaties opgeven voor Auto Loader-resources voor Unity Catalog
In het Beveiligingsmodel van Unity Catalog wordt ervan uitgegaan dat alle opslaglocaties waarnaar wordt verwezen in een workload worden beheerd door Unity Catalog. Databricks raadt aan altijd controlepunt- en schemaontwikkelingsgegevens op te slaan op opslaglocaties die worden beheerd door Unity Catalog. Met Unity Catalog kunt u geen controlepunt-, schema-inferentie- en evolutiebestanden onder de tabelmap nesten.
Gegevens opnemen uit cloudopslag met behulp van Unity Catalog
In de volgende voorbeelden wordt ervan uitgegaan dat de gebruiker die het uitvoert, machtigingen op READ FILES de externe locatie heeft, eigenaarsrechten op de doeltabellen en de volgende configuraties en toegangsrechten.
Notitie
Azure Data Lake Storage is het enige Azure-opslagtype dat wordt ondersteund door Unity Catalog.
| Opslaglocatie | Toekenning |
|---|---|
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 FILES, CREATE TABLE |
Automatisch laden gebruiken om een beheerde tabel van Unity Catalog te laden
In de volgende voorbeelden ziet u hoe u Auto Loader gebruikt om gegevens op te nemen in een beheerde tabel van Unity Catalog.
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'
);
Wanneer u read_files gebruikt in een CREATE STREAMING TABLE statement binnen Lakeflow-pijplijnen, worden checkpoint- en schemalocaties automatisch beheerd.
Automatisch laden gebruiken om een externe tabel van Unity Catalog te laden
Als u gegevens op een specifieke opslaglocatie wilt bewaren, gebruikt u een externe tabel van Unity Catalog in plaats van een beheerde tabel. Gebruik bijvoorbeeld een externe tabel om gegevens te delen met niet-Databricks-clients of om bestaande gegevens te registreren. Met externe tabellen stelt u het opslagpad in. Zie Werken met externe tabellen.
Als u Auto Loader gebruikt met een externe Unity Catalog-tabel, registreer de tabel dan eerst met CREATE TABLE ... LOCATION en stream er vervolgens op naam naartoe. De tabellocatie moet zich in een externe locatie bevinden waar u machtigingen hebt CREATE EXTERNAL TABLE . De controlepuntlocatie moet zich ook bevinden in een door Unity Catalog beheerde externe locatie. Gebruik een apart pad, los van de tabelgegevens.
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"))