Udostępnij za pośrednictwem


Ładowanie danych przy użyciu funkcji COPY INTO z poświadczeniami tymczasowymi

Jeśli klaster usługi Azure Databricks lub usługa SQL Warehouse nie ma uprawnień do odczytywania plików źródłowych, możesz użyć poświadczeń tymczasowych, aby uzyskać dostęp do danych z zewnętrznego magazynu obiektów w chmurze i załadować pliki do tabeli usługi Delta Lake.

W zależności od sposobu zarządzania zabezpieczeniami chmury przez organizację może być konieczne wyświetlenie monitu administratora chmury lub użytkownika o podanie poświadczeń. Aby uzyskać więcej informacji, zobacz Generowanie poświadczeń tymczasowych na potrzeby pozyskiwania.

Określanie tymczasowych poświadczeń lub opcji szyfrowania w celu uzyskania dostępu do danych

Uwaga

Opcje poświadczeń i szyfrowania są dostępne w środowisku Databricks Runtime 10.4 LTS i nowszym.

COPY INTO Obsługuje:

  • Tokeny SAS platformy Azure do odczytu danych z usług ADLS Gen2 i Azure Blob Storage. Tokeny tymczasowe usługi Azure Blob Storage są na poziomie kontenera, natomiast tokeny usługi ADLS Gen2 mogą być na poziomie katalogu oprócz poziomu kontenera. Usługa Databricks zaleca używanie tokenów SAS na poziomie katalogu, jeśli jest to możliwe. Token SAS musi mieć uprawnienia "Odczyt", "Lista" i "Uprawnienia".
  • Tokeny usługi AWS STS do odczytywania danych z usługi AWS S3. Tokeny powinny mieć uprawnienia "s3:GetObject*", "s3:ListBucket" i "s3:GetBucketLocation".

Ostrzeżenie

Aby uniknąć nieprawidłowego użycia lub ujawnienia tymczasowych poświadczeń, usługa Databricks zaleca ustawienie horyzontów wygaśnięcia, które są wystarczająco długie, aby ukończyć zadanie.

COPY INTO obsługuje ładowanie zaszyfrowanych danych z usługi AWS S3. Aby załadować zaszyfrowane dane, podaj typ szyfrowania i klucz do odszyfrowania danych.

Ładowanie danych przy użyciu poświadczeń tymczasowych

W poniższym przykładzie dane są ładowane z usług S3 i ADLS Gen2 przy użyciu poświadczeń tymczasowych w celu zapewnienia dostępu do danych źródłowych.

COPY INTO my_json_data
FROM 's3://my-bucket/jsonData' WITH (
  CREDENTIAL (AWS_ACCESS_KEY = '...', AWS_SECRET_KEY = '...', AWS_SESSION_TOKEN = '...')
)
FILEFORMAT = JSON

COPY INTO my_json_data
FROM 'abfss://container@storageAccount.dfs.core.windows.net/jsonData' WITH (
  CREDENTIAL (AZURE_SAS_TOKEN = '...')
)
FILEFORMAT = JSON

Ładowanie zaszyfrowanych danych

Przy użyciu kluczy szyfrowania dostarczonych przez klienta poniższy przykład ładuje dane z usługi S3.

COPY INTO my_json_data
FROM 's3://my-bucket/jsonData' WITH (
  ENCRYPTION (TYPE = 'AWS_SSE_C', MASTER_KEY = '...')
)
FILEFORMAT = JSON

Ładowanie danych JSON przy użyciu poświadczeń dla źródła i elementu docelowego

W poniższym przykładzie dane JSON są ładowane z pliku na platformie Azure do zewnętrznej tabeli delty o nazwie my_json_data. Przed wykonaniem tej tabeli należy utworzyć COPY INTO tę tabelę. Polecenie używa jednego istniejącego poświadczenia do zapisu w zewnętrznej tabeli delty, a drugiego do odczytu z lokalizacji ABFSS.

COPY INTO my_json_data WITH (CREDENTIAL target_credential)
  FROM 'abfss://container@storageAccount.dfs.core.windows.net/base/path' WITH (CREDENTIAL source_credential)
  FILEFORMAT = JSON
  FILES = ('f.json')