使用 COPY INTO 搭配服務主體載入數據
本文說明如何使用 COPY INTO
命令,將數據從 Azure 帳戶中的 Azure Data Lake Storage Gen2 (ADLS Gen2) 容器載入 Databricks SQL 中的數據表。
本文中的步驟假設您的系統管理員已將 SQL 倉儲設定為使用 Azure Databricks 服務主體,讓您可以在 ADLS Gen2 中存取來源檔案。 如果您的系統管理員以記憶體認證設定 Unity 目錄外部位置,請參閱 改用 COPY INTO 搭配 Unity 目錄磁碟區或外部位置 載入數據。 如果您的系統管理員提供暫存認證(Blob SAS 令牌),請改為遵循使用 COPY INTO 搭配暫存認證載入數據中的步驟。
Databricks 建議使用 COPY INTO 命令搭配 Databricks SQL 載入增量和大量數據。
注意
COPY INTO
適用於包含數千個檔案的數據源。 Databricks 建議您使用 自動載入器 來載入 Databricks SQL 中不支援的數百萬個檔案。
開始之前
將數據載入 Azure Databricks 之前,請確定您有下列專案:
- 存取 ADLS Gen2 中的數據。 您的系統管理員必須先完成設定 數據存取以擷取 的步驟,讓您的 Databricks SQL 倉儲可以讀取來源檔案。
- Databricks SQL 倉儲。
- 可以管理 SQL 倉儲的許可權。
- ADLS Gen2 容器中數據的路徑。
- 熟悉 Databricks SQL 用戶介面。
步驟 1:確認雲端記憶體中數據的存取權
若要確認您可以存取雲端物件記憶體中正確的數據,請執行下列動作:
在提要欄位中,按兩下 [ 建立 > 查詢]。
在 SQL 編輯器的功能表欄中,選取 SQL 倉儲。
在 SQL 編輯器中,貼上下列程式代碼:
select * from csv.<path>
將 取代
<path>
為您從系統管理員收到的ADLS Gen2容器路徑。例如,abfss://<container>@<storage-account>.dfs.core.windows.net/<folder>
。按一下 [執行]。
步驟 2:建立數據表
此步驟說明如何在 Azure Databricks 工作區中建立數據表,以保存傳入的數據。
在 SQL 編輯器中,貼上下列程式代碼:
CREATE TABLE <catalog_name>.<schema_name>.<table_name> ( tpep_pickup_datetime TIMESTAMP, tpep_dropoff_datetime TIMESTAMP, trip_distance DOUBLE, fare_amount DOUBLE, pickup_zip INT, dropoff_zip INT );
按一下 [執行]。
步驟 3:將數據從雲端記憶體載入數據表
此步驟說明如何將ADLS Gen2容器的數據載入 Azure Databricks 工作區中的數據表。
在提要欄位中,按兩下 [ 建立 > 查詢]。
在 SQL 編輯器的功能表欄中,選取 SQL 倉儲,並確定 SQL 倉儲正在執行。
在 SQL 編輯器中,貼上下列程式代碼。 在此程式代碼中,取代:
<container>
具有記憶體帳戶內 ADLS Gen2 容器的名稱。<storage-account>
使用 ADLS Gen2 記憶體帳戶的名稱。<folder>
包含資料資料資料夾名稱。<blob-sas-token>
使用您從系統管理員收到的 Blob SAS 令牌值。
COPY INTO <catalog-name>.<schema-name>.<table-name> FROM 'abfss://<container>@<storage-account>.dfs.core.windows.net/<folder>' FILEFORMAT = CSV FORMAT_OPTIONS ( 'header' = 'true', 'inferSchema' = 'true' ); SELECT * FROM <catalog-name>.<schema-name>.<table-name>;
注意
FORMAT_OPTIONS
與FILEFORMAT
不同。 在此情況下,header
選項會指示 Azure Databricks 將 CSV 檔案的第一個數據列視為標頭,而inferSchema
選項會指示 Azure Databricks 自動判斷 CSV 檔案中每個欄位的數據類型。按一下 [執行]。
注意
如果您再次按兩下 [ 執行 ],則不會將任何新數據載入數據表中。 這是因為
COPY INTO
命令只會處理它視為新數據的內容。
清理
如果您不想再保留資源,則可以清除工作區中的相關聯資源。
刪除資料表
在提要欄位中,按兩下 [ 建立 > 查詢]。
選取 SQL 倉儲,並確定 SQL 倉儲正在執行。
貼上下方程式碼:
DROP TABLE <catalog-name>.<schema-name>.<table-name>;
按一下 [執行]。
將滑鼠停留在此查詢的索引標籤上,然後按兩下 X 圖示。
刪除 SQL 編輯器中的查詢
- 在提要欄位中,按兩下 [ SQL 編輯器]。
- 在 SQL 編輯器的功能表列中,將滑鼠停留在您為此教學課程建立的每個查詢的索引標籤上,然後按兩下 X 圖示。
其他資源
- COPY INTO 參考文章