使用 COPY INTO 搭配暫存認證載入數據
如果您的 Azure Databricks 叢集或 SQL 倉儲沒有讀取來源檔案的許可權,您可以使用暫存認證來存取外部雲端物件記憶體的數據,並將檔案載入 Delta Lake 數據表。
根據貴組織管理雲端安全性的方式,您可能需要要求雲端系統管理員或進階使用者提供認證。 如需詳細資訊,請參閱 產生擷取的暫存認證。
指定存取資料的暫存認證或加密選項
注意
Databricks Runtime 10.4 LTS 和更新版本提供認證和加密選項。
COPY INTO
支援:
- 從 ADLS Gen2 和 Azure Blob 儲存體 讀取數據的 Azure SAS 令牌。 Azure Blob 儲存體 暫存令牌位於容器層級,而 ADLS Gen2 令牌除了容器層級之外,也可以位於目錄層級。 Databricks 建議盡可能使用目錄層級 SAS 令牌。 SAS 令牌必須具有 「讀取」、「清單」和「許可權」許可權。
- 要從 AWS S3 讀取資料的 AWS STS 令牌 。 您的令牌應該具有 “s3:GetObject*”、“s3:ListBucket” 和 “s3:GetBucketLocation” 許可權。
警告
為了避免誤用或暴露暫時認證,Databricks 建議您設定到期日範圍,只要夠長的時間才能完成工作。
COPY INTO
支援從 AWS S3 載入加密的數據。 若要載入加密的數據,請提供加密類型和金鑰來解密數據。
使用暫存認證載入數據
下列範例會使用暫存認證從 S3 和 ADLS Gen2 載入數據,以提供源數據的存取權。
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 數據從 Azure 上的檔案載入至名為 my_json_data
的外部 Delta 資料表。
必須先建立此數據表, 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')