Поделиться через


Загрузка данных с помощью COPY INTO с временными учетными данными

Если у кластера Azure Databricks или хранилища SQL нет разрешений на чтение исходных файлов, можно использовать временные учетные данные для доступа к данным из внешнего хранилища объектов облака и загрузки файлов в таблицу Delta Lake.

В зависимости от того, как ваша организация управляет облачной безопасностью, может потребоваться попросить администратора облака или пользователя power user предоставить вам учетные данные. Дополнительные сведения см. в разделе "Создание временных учетных данных для приема".

Указание параметров временных учетных данных или шифрования для доступа к данным

Примечание.

Параметры учетных данных и шифрования доступны в Databricks Runtime 10.4 LTS и выше.

COPY INTO поддерживает:

  • Маркеры SAS Azure для чтения данных из ADLS 2-го поколения и Хранилища BLOB-объектов Azure. Временные маркеры Хранилища BLOB-объектов Azure находятся на уровне контейнера, а маркеры ADLS 2-го поколения могут находиться на уровне каталога в дополнение к уровню контейнера. Для Databricks рекомендуется по возможности использовать маркеры SAS уровня каталога. Маркер SAS должен иметь разрешения Read (чтение), List (вывод списка) и Permissions (разрешения).
  • Токены STS AWS для чтения данных из AWS S3. У токенов должны быть разрешения s3:GetObject*, s3:ListBucket и s3:GetBucketLocation.

Предупреждение

Чтобы избежать неправильного использования или раскрытия временных учетных данных, для Databricks рекомендуется задавать срок действия, не превосходящий времени выполнения задачи.

COPY INTO поддерживает загрузку зашифрованных данных из AWS S3. Чтобы загрузить зашифрованные данные, укажите тип шифрования и ключ для расшифровки данных.

Загрузка данных с использованием временных учетных данных

Следующий пример загружает данные из S3 и ADLS 2-го поколения, используя временные учетные данные для предоставления доступа к исходным данным.

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

Загрузка зашифрованных данных

В примере ниже данные загружаются из S3 путем использования ключей шифрования, предоставляемых клиентом.

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

Загрузка данных JSON с использованием учетных данных для исходного и целевого расположения

В примере ниже данные JSON загружаются из 5 файлов в Azure во внешнюю таблицу Delta с именем my_json_data. Эту таблицу необходимо создать перед выполнением COPY INTO. Команда использует один существующий набор учетных данных для записи во внешнюю таблицу Delta, а другой — для чтения из расположения 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')