Laden von Daten mithilfe von COPY INTO mit externen Unity Catalog-Volumes oder externen Speicherorten
Erfahren Sie, wie Sie COPY INTO
verwenden, um Daten aus allen von COPY INTO unterstützten Quellen und Dateiformaten in verwalteten oder externen Tabellen von Unity Catalog zu erfassen. Unity Catalog fügt neue Optionen zum Konfigurieren des sicheren Zugriffs auf Rohdaten hinzu. Sie können Unity Catalog-Volumes oder externe Speicherorte verwenden, um auf Daten im Cloudobjektspeicher zuzugreifen.
Databricks empfiehlt die Verwendung von Volumes für den Zugriff auf Dateien im Cloudspeicher als Teil des Erfassungsprozesses mit COPY INTO
. Weitere Informationen zu Empfehlungen für die Verwendung von Volumes und externen Speicherorten finden Sie unter Bewährte Methoden für Unity Catalog.
In diesem Artikel wird beschrieben, wie Sie den COPY INTO
-Befehl verwenden, um Daten aus einem Azure Data Lake Storage Gen2(ADLS Gen2)-Container in Ihrem Azure-Konto in eine Tabelle in Databricks SQL laden.
Die Schritte in diesem Artikel gehen davon aus, dass Ihr Administrator ein Unity Catalog-Volume oder einen externen Speicherort konfiguriert hat, damit Sie in ADLS Gen2 auf Ihre Quelldateien zugreifen können. Wenn Ihr Administrator eine Computeressource für die Verwendung eines Dienstprinzipals konfiguriert hat, finden Sie stattdessen weitere Informationen unter Laden von Daten mithilfe von COPY INTO mit einem Dienstprinzipal oder Tutorial: COPY INTO mit Spark SQL. Wenn Ihr Administrator Ihnen temporäre Anmeldeinformationen (ein Blob-SAS-Token) zur Verfügung gestellt hat, führen Sie stattdessen die Schritte unter Laden von Daten mithilfe von COPY INTO mit temporären Anmeldeinformationen aus.
Voraussetzungen
Damit Sie COPY INTO
zum Laden von Daten aus einem Unity Catalog-Volume oder Cloudobjektspeicherpfad verwenden können, der als externer Unity Catalog-Speicherort definiert ist, benötigen Sie Folgendes:
Die Berechtigung
READ VOLUME
für ein Volume oder die BerechtigungREAD FILES
für einen externen Speicherort.Weitere Informationen zum Erstellen von Volumes finden Sie unter Was sind Unity Catalog-Volumes?.
Weitere Informationen zum Erstellen externer Speicherorte finden Sie unter Erstellen eines externen Speicherorts zum Verbinden des Cloudspeichers mit Azure Databricks.
Der Pfad zu Ihren Quelldaten in Form einer Cloudobjektspeicher-URL oder eines Volumepfads.
Beispiel für eine Cloudobjektspeicher-URL:
abfss://container@storageAccount.dfs.core.windows.net/raw-data/json
.Beispielvolumepfad:
/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data/json
.Die Berechtigung
USE SCHEMA
für das Schema, das die Zieltabelle enthält.Die Berechtigung
USE CATALOG
für den übergeordneten Katalog.
Weitere Informationen zu Unity Catalog-Berechtigungen finden Sie unter Unity Catalog-Berechtigungen und sicherungsfähige Objekte.
Laden von Daten aus einem Volume
Um Daten von einem Unity Catalog-Volume zu laden, müssen Sie über die Berechtigung READ VOLUME
verfügen. Volumeberechtigungen gelten für alle geschachtelten Verzeichnisse unter dem angegebenen Volume.
Wenn Sie beispielsweise Zugriff auf ein Volume mit dem Pfad /Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/
besitzen, sind die folgenden Befehle zulässig:
COPY INTO landing_table
FROM '/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data'
FILEFORMAT = PARQUET;
COPY INTO json_table
FROM '/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data/json'
FILEFORMAT = JSON;
Optional können Sie auch einen Volumepfad mit dem dbfs-Schema verwenden. Die folgenden Befehle sind beispielsweise ebenfalls zulässig:
COPY INTO landing_table
FROM 'dbfs:/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data'
FILEFORMAT = PARQUET;
COPY INTO json_table
FROM 'dbfs:/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data/json'
FILEFORMAT = JSON;
Laden von Daten mithilfe eines externen Speicherorts
Das folgende Beispiel lädt Daten aus ADLS Gen2 in Tabellen unter Verwendung von externen Unity Catalog-Speicherorten, um Zugriff auf den Quellcode zu ermöglichen.
COPY INTO my_json_data
FROM 'abfss://container@storageAccount.dfs.core.windows.net/jsonData'
FILEFORMAT = JSON;
Vererbung von Berechtigungen für externe Speicherorte
Berechtigungen für externe Speicherorte gelten für alle geschachtelten Verzeichnisse unter dem angegebenen Speicherort.
Wenn Sie also beispielsweise Zugriff auf einen externen Speicherort haben, der mit der URL abfss://container@storageAccount.dfs.core.windows.net/raw-data
definiert ist, sind die folgenden Befehle gültig:
COPY INTO landing_table
FROM 'abfss://container@storageAccount.dfs.core.windows.net/raw-data'
FILEFORMAT = PARQUET;
COPY INTO json_table
FROM 'abfss://container@storageAccount.dfs.core.windows.net/raw-data/json'
FILEFORMAT = JSON;
Durch Berechtigungen für diesen externen Speicherort werden keine Berechtigungen für über- oder gleichgeordnete Verzeichnisse erteilt. So ist beispielsweise keiner der folgenden Befehle gültig:
COPY INTO parent_table
FROM 's3://landing-bucket'
FILEFORMAT = PARQUET;
COPY INTO sibling_table
FROM 's3://landing-bucket/json-data'
FILEFORMAT = JSON;
Namespace mit drei Ebenen für Zieltabellen
Sie können einen dreistufigen Bezeichner (<catalog_name>.<database_name>.<table_name>
) verwenden, um eine Unity Catalog-Tabelle als Ziel festzulegen. Mit den Befehlen USE CATALOG <catalog_name>
und USE <database_name>
können Sie den Standardkatalog und die Standarddatenbank für Ihre aktuelle Abfrage oder Ihr aktuelles Notebook festlegen.