Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Automatisk inläsare kan på ett säkert sätt mata in data från externa platser som konfigurerats med Unity Catalog. Mer information om hur du ansluter lagring på ett säkert sätt med Unity Catalog finns i Ansluta till molnobjektlagring med Unity Catalog. Automatisk inläsare förlitar sig på strukturerad direktuppspelning för inkrementell bearbetning. Rekommendationer och begränsningar finns i Använda Unity Catalog med strukturerad direktuppspelning.
Kommentar
I Databricks Runtime 11.3 LTS och senare kan du använda Auto Loader med antingen standard- eller dedikerade åtkomstlägen (tidigare delade och enanvändares åtkomstlägen).
Kataloglistningsläge stöds som standard.
Ange platser för Auto Loader-resurser i Unity Catalog
Säkerhetsmodellen för Unity Catalog förutsätter att alla lagringsplatser som refereras i en arbetsbelastning hanteras av Unity Catalog. Databricks rekommenderar att du alltid lagrar information om kontrollpunkter och schemautveckling på lagringsplatser som hanteras av Unity Catalog. Med Unity Catalog kan du inte kapsla kontrollpunkter eller schemainferens- och evolutionsfiler under tabellkatalogen.
Mata in data från molnlagring med hjälp av Unity Catalog
I följande exempel förutsätts att den körande användaren har READ FILES behörigheter för den externa platsen, ägarbehörigheter för måltabellerna och följande konfigurationer och tilldelningar.
Kommentar
Azure Data Lake Storage är den enda Azure-lagringstypen som stöds av Unity Catalog.
| Lagringsplats | Bevilja |
|---|---|
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 |
Använd Auto Loader för att läsa in till en hanterad Unity Catalog-tabell
Följande exempel visar hur du använder automatisk inläsning för att mata in data till en hanterad Unity Catalog-tabell.
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'
);
När du använder read_files i en CREATE STREAMING TABLE instruktion i Lakeflow-pipelines hanteras kontrollpunkter och schemaplatser automatiskt.
Använd Auto Loader för att läsa in i en extern tabell i Unity Catalog
Om du vill behålla data på en specifik lagringsplats använder du en extern Unity Catalog-tabell i stället för en hanterad tabell. Använd till exempel en extern tabell för att dela data med icke-Databricks-klienter eller för att registrera befintliga data. Med externa tabeller anger du lagringssökvägen. Se Arbeta med externa tabeller.
Om du vill använda Auto Loader med en extern Unity Catalog-tabell registrerar du först tabellen med CREATE TABLE ... LOCATIONoch strömmar sedan till den med namn. Tabellplatsen måste finnas på en extern plats där du har CREATE EXTERNAL TABLE behörighet. Platsen för kontrollpunkten måste också finnas på en extern plats som hanteras av Unity Catalog. Använd en separat sökväg från tabelldata.
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"))