共用方式為


整合 Azure 資料總管與 Azure Data Factory

Azure Data Factory (ADF) 是雲端式數據整合服務,可讓您整合不同的數據存放區,並在數據上執行活動。 ADF 可讓您建立數據驅動工作流程,以協調及自動化數據移動和數據轉換。 Azure 數據總管是 Azure Data Factory 中支援的其中一個 數據存放區

適用於 Azure 數據總管的 Azure Data Factory 活動

Azure 數據總管使用者可以使用各種與 Azure Data Factory 的整合:

複製活動

Azure Data Factory 複製活動 可用來在數據存放區之間傳輸數據。 Azure 數據總管支援做為來源,其中數據會從 Azure 數據總管複製到任何支援的數據存放區,而接收則會將數據從任何支援的數據存放區複製到 Azure 數據總管。 如需詳細資訊,請參閱 使用 Azure Data Factory 將數據複製到 Azure 數據總管或從 Azure 數據總管複製數據。 如需詳細的逐步解說,請參閱 將數據從 Azure Data Factory 載入 Azure 數據總管。 Azure 數據總管支援 Azure IR(Integration Runtime),在數據在 Azure 內複製時使用,以及在將數據從內部部署或具有訪問控制的網路中複製數據時使用,例如 Azure 虛擬網絡。 如需詳細資訊,請參閱 要使用的 IR。

提示

使用複製活動並建立連結服務數據集時,請選取數據存放區 Azure 數據總管 (Kusto),而不是舊的數據存放Kusto

查閱活動

查閱活動用於在 Azure 數據總管上執行查詢。 查詢的結果會當做查閱活動的輸出傳回,而且可以在管線中的下一個活動中使用,如 ADF 查閱檔中所述

除了回應大小限制為 5,000 個數據列和 2 MB 之外,活動也有 1 小時的查詢逾時限制。

命令活動

命令活動允許執行 Azure 資料 總管管理命令。 不同於查詢,管理命令可能會修改資料或元數據。 某些管理命令的目標是使用 或 .set-or-append之類的.ingest命令將數據內嵌至 Azure 數據總管,或使用 之類的.export命令將數據從 Azure 數據總管複製到外部資料存放區。 如需命令活動的詳細逐步解說,請參閱 使用 Azure Data Factory 命令活動來執行 Azure 數據總管管理命令。 使用管理命令來複製數據,有時比 複製活動 更快、更便宜的選項。 若要判斷何時使用 Command 活動與 複製活動,請參閱複製資料時在複製和命令活動之間選取。

從資料庫範本大量複製

使用 Azure Data Factory 樣本 從資料庫大量複製到 Azure 數據總管是預先定義的 Azure Data Factory 管線。 此範本可用來為每個資料庫或每個數據表建立許多管線,以加快數據複製的速度。

對應資料流程

Azure Data Factory 對應數據流 是可視化設計的數據轉換,可讓數據工程師在不撰寫程式碼的情況下開發圖形化數據轉換邏輯。 若要建立數據流並將數據內嵌至 Azure 數據總管,請使用下列方法:

  1. 建立對應數據流
  2. 將數據匯出至 Azure Blob
  3. 定義 事件方格ADF複製活動 ,以將資料內嵌至 Azure 資料總管。

複製數據時,在複製和 Azure 資料總管命令活動之間選取

本節可協助您針對數據複製需求選取正確的活動。

將數據從 Azure 數據總管複製或複製到 Azure 數據總管時,Azure Data Factory 中有兩個可用的選項:

  • 複製活動。
  • Azure 資料總管命令活動會執行其中一個管理命令,以在 Azure 數據總管中傳輸數據。

從 Azure 資料總管複製數據

您可以使用複製活動或 .export 命令,從 Azure 資料總管複製數據。 命令 .export 會執行查詢,然後匯出查詢的結果。

如需從 Azure 資料總管複製資料的 複製活動 和.export命令比較,請參閱下表。

複製活動 .export 命令
流程描述 ADF 會在 Kusto 上執行查詢、處理結果,並將它傳送至目標數據存放區。
Azure 數據總管 > ADF > 接收數據存放區
ADF 會將 .export 管理命令傳送至執行命令的 Azure 數據總管,並將數據直接傳送至目標數據存放區。
(** Azure 數據總管 > 接收數據存放區**)
支援的目標數據存放區 各種 支持的數據存放區 ADLSv2、Azure Blob、SQL 資料庫
效能 集中式
  • 分散式 (預設值),同時從多個節點導出數據
  • 更快和COGS(銷售的商品成本)有效率。
伺服器限制 查詢限制 可以擴充/停用。 根據預設,ADF 查詢包含:
  • 大小限制為 500,000 筆記錄或 64 MB。
  • 時間限制為10分鐘。
  • noTruncation 設定為 false。
根據預設,擴充或停用查詢限制:
  • 大小限制已停用。
  • 伺服器逾時會延長至 1 小時。
  • MaxMemoryConsumptionPerIteratorMaxMemoryConsumptionPerQueryPerNode 會擴充至最大值 (5 GB,TotalPhysicalMemory/2)。

提示

如果您的複製目的地是命令支援的.export其中一個數據存放區,而且如果沒有任何 複製活動 功能對您的需求至關重要,請選取.export命令。

將數據複製到 Azure 數據總管

您可以使用複製活動或擷取命令將數據複製到 Azure 數據總管,例如從查詢擷取(.set-or-append、、.set-or-replace.set.replace)從記憶體擷取)。.ingest

如需 複製活動的比較,請參閱下表,以及擷取命令,以將數據複製到 Azure 數據總管。

複製活動 從查詢內嵌
.set-or-append / .set-or-replace / .set / .replace
從記憶體擷取
.ingest
流程描述 ADF 會從源數據存放區取得數據、將它轉換成表格式格式,並執行必要的架構對應變更。 ADF 接著會將數據上傳至 Azure Blob,將其分割成區塊,然後下載 Blob 以將它們內嵌到 Azure 數據總管數據表中。
源數據存放區 > ADF > Azure Blob Azure 數據總管>
這些命令可以執行查詢或 .show 命令,並將查詢的結果擷取到數據表中(Azure 數據總管 Azure 數據 > 總管)。 此命令會藉由從一或多個雲端記憶體成品「提取」數據,將數據擷取到數據表中。
支援的源數據存放區 各種選項 ADLS Gen 2、Azure Blob、SQL(使用 sql_request() 外掛程式)、Azure Cosmos DB(使用 cosmosdb_sql_request 外掛程式),以及提供 HTTP 或 Python API 的任何其他數據存放區。 文件系統、Azure Blob 儲存體、ADLS Gen 1、ADLS Gen 2
效能 擷取會排入佇列和管理,這可確保小型擷取,並藉由提供負載平衡、重試和錯誤處理來確保高可用性。
  • 這些命令不是針對大量數據匯入所設計。
  • 如預期般運作,更便宜。 但對於生產案例,以及流量速率和數據大小較大時,請使用 複製活動。
伺服器限制
  • 沒有大小限制。
  • 最大逾時限制:每個內嵌 Blob 一小時。
  • 查詢元件上只有大小限制,您可以藉由指定 noTruncation=true來略過。
  • 最大逾時限制:一小時。
  • 沒有大小限制。
  • 最大逾時限制:一小時。

提示

  • 將數據從 ADF 複製到 Azure 資料總管時,請使用 ingest from query 命令。
  • 針對大型數據集 (>1GB),請使用 複製活動。

所需的權限

下表列出與 Azure Data Factory 整合中各種步驟的必要許可權。

步驟 作業 最低許可權層級 備註
建立連結服務 資料庫導覽 資料庫查看器
使用ADF的登入使用者應獲得讀取資料庫元數據的授權。
用戶可以手動提供資料庫名稱。
測試連接 資料庫監視器數據表擷取器
服務主體應獲授權來執行資料庫層級 .show 命令或數據表層級擷取。
  • TestConnection 會驗證叢集的連線,而不是資料庫。 即使資料庫不存在,它還是可以成功。
  • 數據表管理員許可權不足。
建立數據集 資料表瀏覽 資料庫監視器
使用ADF登入的用戶必須獲得授權,才能執行資料庫層級 .show 命令。
用戶可以手動提供數據表名稱。
建立數據集複製活動 預覽資料 資料庫查看器
服務主體必須經過授權,才能讀取資料庫元數據。
匯入結構描述 資料庫查看器
服務主體必須經過授權,才能讀取資料庫元數據。
當 Azure 資料總管是表格式到表格式複製的來源時,ADF 會自動匯入架構,即使使用者未明確匯入架構也一樣。
Azure 數據總管作為接收 建立依名稱數據行對應 資料庫監視器
服務主體必須獲得授權,才能執行資料庫層級 .show 命令。
  • 所有必要作業都會使用 數據表擷取器
  • 某些選擇性作業可能會失敗。
  • 在數據表上建立 CSV 對應
  • 卸除對應
數據表擷取器資料庫管理員
服務主體必須獲得授權,才能對數據表進行變更。
內嵌資料 數據表擷取器資料庫管理員
服務主體必須獲得授權,才能對數據表進行變更。
Azure 數據總管作為來源 執行查詢 資料庫查看器
服務主體必須經過授權,才能讀取資料庫元數據。
Kusto 命令 根據每個命令的許可權層級。

效能

如果 Azure 資料總管是來源,而且您使用包含查詢的查閱、複製或命令活動,請參閱 效能資訊的查詢最佳做法複製活動的 ADF 檔。

本節說明使用 Azure 數據總管是接收的複製活動。 Azure 數據總管接收的估計輸送量為 11-13 MBps。 下表詳細說明影響 Azure 數據總管接收效能的參數。

參數 備註
元件地理鄰近性 將所有元件放在相同的區域中:
  • 來源和接收數據存放區。
  • ADF 整合運行時間。
  • 您的 Azure 資料總管叢集。
請確定您的整合運行時間至少位於與 Azure 資料總管叢集相同的區域中。
DIU 數目 ADF 每四個 DIU 一個 VM。
只有當來源是具有多個檔案的檔案型存放區時,增加 DIU 才有説明。 然後,每個 VM 都會平行處理不同的檔案。 因此,複製單一大型檔案的延遲比複製多個較小的檔案還要高。
Azure 數據總管叢集的數量和 SKU 大量 Azure 數據總管節點可提升擷取處理時間。 使用開發 SKU 將會嚴重限制效能
平行處理原則 若要從資料庫複製大量數據,請分割您的數據,然後使用 ForEach 迴圈平行複製每個分割區,或使用 從資料庫大量複製至 Azure 數據總管範本。 注意:複製活動 中的設定>平行處理原則程度與 Azure 數據總管無關。
數據處理複雜度 延遲會根據來源檔格式、數據行對應和壓縮而有所不同。
執行整合運行時間的 VM
  • 針對 Azure 複本,ADF VM 和電腦 SKU 無法變更。
  • 針對內部部署至 Azure 複本,判斷裝載自我裝載 IR 的 VM 是否足夠強大。

秘訣和常見陷阱

監視活動進度

  • 監視活動進度時, 數據寫入 屬性可能會大於 數據讀取 屬性,因為 數據讀取 是根據二進位檔大小計算,而 寫入 的數據是根據記憶體內部大小計算,在數據還原串行化和解壓縮之後。

  • 監視活動進度時,您可以看到數據已寫入 Azure 數據總管接收。 查詢 Azure 數據總管數據表時,您會看到數據尚未送達。 這是因為複製到 Azure 數據總管時有兩個階段。

    • 第一個階段會讀取源數據、將其分割為 900 MB 區塊,並將每個區塊上傳至 Azure Blob。 ADF 活動進度檢視可以看到第一個階段。
    • 第二個階段會在所有數據上傳至 Azure Blob 之後開始。 叢集的節點會下載 Blob,並將數據內嵌至接收數據表。 接著會在 Azure 數據總管數據表中看到數據。

因逸出不當而無法擷取 CSV 檔案

Azure 數據總管預期 CSV 檔案與 RFC 4180 一致。 其預期如下:

  • 包含需要逸出字元的字段(例如 “和新行”)應該以 字元開頭和結尾,不含空格符。 欄位內的所有 「 字元都會使用雙 字元 (“” )出。 例如,「Hello, 」「World」是一個有效的 CSV 檔案,其中單一記錄具有內容 Hello, “World” 的單一記錄。
  • 檔案中的所有記錄必須具有相同數目的數據行和欄位。

Azure Data Factory 允許反斜杠(逸出)字元。 如果您使用 Azure Data Factory 產生具有反斜杠字元的 CSV 檔案,將檔案擷取至 Azure 數據總管將會失敗。

範例

下列文字值: Hello, “World”
ABC DEF
“ABC\D”EF
“ABC DEF

應該會出現在適當的 CSV 檔案中,如下所示:“Hello, ”“World””
“ABC DEF”
“”“ABC\D”“EF”
“”“ABC DEF”

使用默認逸出字元 (反斜杠),下列 CSV 將無法與 Azure 數據總管搭配使用:“Hello, ”World”
“ABC DEF”
“”ABC\D“EF”
“”ABC DEF”

巢狀 JSON 物件

將 JSON 檔案複製到 Azure 資料總管時,請注意:

  • 不支援數位。
  • 如果您的 JSON 結構包含對象資料類型,Azure Data Factory 會扁平化物件的子專案,並嘗試將每個子項目對應至 Azure 數據總管數據表中的不同數據行。 如果您要將整個物件項目對應至 Azure 資料總管中的單一資料列:
    • 將整個 JSON 數據列內嵌至 Azure 數據總管中的單一動態數據行。
    • 使用 Azure Data Factory 的 JSON 編輯器手動編輯管線定義。 在對應中
      • 拿掉針對每個子專案建立的多個對應,並新增將物件類型對應至數據表數據行的單一對應。
      • 在右方括弧後面新增逗號,後面接著:
        "mapComplexValuesToString": true.

在複製到 Azure 資料總管時指定其他屬性

您可以在管線的複製活動中指定這些屬性,以新增其他 擷取屬性

若要新增屬性

  1. 在 Azure Data Factory 中,選取 [ 撰寫 鉛筆工具]。

  2. 在 [管線] 底下,選取您要在其中新增其他擷取屬性的管線。

  3. 在 [ 活動] 畫布中,選取 [ 複製數據 ] 活動。

  4. 在活動詳細數據中,選取 [接收],然後展開 [ 其他屬性]。

  5. 選取 [ 新增],選取 [視需要新增節點 ] 或 [新增陣列 ],然後指定擷取屬性名稱和值。 重複此步驟以新增更多屬性。

  6. 完成儲存併發佈管線之後。

後續步驟

使用 Azure Data Factory 將數據複製到 Azure 數據總管。