透過 Azure 事件中樞在 Azure Blob 儲存體或 Azure Data Lake Storage 中擷取事件

Azure 事件中樞可讓您自動將事件中樞的串流資料擷取至您選擇的 Azure Blob 儲存體Azure Data Lake Storage Gen 1 或 Gen 2 帳戶,並另外增加了可指定時間或大小間隔的彈性。 設定擷取的速度很快,因此執行時不需要系統管理成本,而且其會根據標準層中的事件中樞輸送量單位,或進階層中的 處理單位自動調整。 事件中樞擷取是將串流資料載入至 Azure 的最簡單方式,並可讓您專注於處理資料而非擷取資料。

顯示將事件中樞資料擷取至 Azure 儲存體或 Azure Data Lake Storage 的影像

注意

將事件中樞擷取設定為使用 Azure Data Lake Storage Gen 2 的方式,與設為使用 Azure Blob 儲存體相同。 如需詳細資訊,請參閱設定事件中樞擷取

事件中樞擷取可讓您在相同的資料流上處理即時和批次型管線。 這表示您可以建置隨時間而增加需求的解決方案。 不論您現在是要建置著眼於未來即時處理的批次型系統,或想要為現有即時解決方案新增有效率的冷路徑,事件中樞擷取都可以讓使用串流資料變得更簡單。

重要

  • 未使用受控識別進行驗證時,目的地記憶體 (Azure 儲存體 或 Azure Data Lake 儲存體) 帳戶必須位於與事件中樞相同的訂用帳戶中。
  • 事件中樞不支援在進階儲存體帳戶中擷取事件。
  • 事件中樞擷取支援區塊 Blob 的任何非進階 Azure 儲存體帳戶。

事件中樞擷取的運作方式

事件中樞是遙測輸入的時間保留持久性緩衝區,類似於分散式記錄。 在事件中樞調整大小的關鍵是 資料分割取用者模型。 每個分割區都是獨立的資料區段,並會會獨立取用。 經過一段時間,此資料會根據可設定的保留期間刪除。 如此一來,指定的事件中樞永遠不會「太滿」。

事件中樞擷取可讓您指定自己的 Azure Blob 儲存體帳戶和容器,或是 Azure Data Lake Storage 帳戶,可用來儲存擷取的資料。 這些帳戶可以位於與事件中樞相同的區域或另一個區域,增加事件中樞擷取功能的彈性。

擷取的資料會以 Apache Avro 格式寫入,此為精簡、快速、二進位的格式,可使用內嵌結構描述提供豐富的資料結構。 此格式在 Hadoop 生態系統、串流分析和 Azure Data Factory 中廣泛被使用。 本文稍後提供有關如何使用 Avro 的詳細資訊。

注意

當您在 Azure 入口網站中使用無程式碼編輯器時,可以在 Parquet 格式的 Azure Data Lake Storage Gen2 帳戶中擷取事件中樞的串流資料。 如需詳細資訊,請參閱操作說明:以 Parquet 格式從事件中樞擷取資料教學課程:以 Parquet 格式擷取事件中樞資料,並使用 Azure Synapse Analytics 進行分析

擷取時間範圍

事件中樞擷取可讓您設定時間範圍來控制擷取。 此時間範圍是具有「先到先贏原則」的最小大小和時間設定,這表示第一個遇到的觸發程序會導致擷取作業。 如果您有一個 15 分鐘 100 MB 的擷取範圍,且傳送速率為每秒 1 MB,則大小範圍會比時間範圍更早觸發。 每個分割區都會獨立擷取,並在擷取時寫入已完成的區塊 Blob,且會以遇到擷取間隔的時間命名。 儲存體的命名慣例如下所示:

{Namespace}/{EventHub}/{PartitionId}/{Year}/{Month}/{Day}/{Hour}/{Minute}/{Second}

日期值會以零填補,檔名範例如下:

https://mystorageaccount.blob.core.windows.net/mycontainer/mynamespace/myeventhub/0/2017/12/08/03/03/17.avro

如果您的 Azure 儲存體 blob 暫時無法使用,則事件中樞擷取會在您於事件中樞所設的資料保留期間內保留資料,待您的儲存體帳戶再次可用時,再填入資料。

調整輸送量單位或處理單位

在事件中樞的標準層中,流量是由輸送量單位控制,而在事件中樞的進階層中,則由處理單位控制。 事件中樞擷取會直接從內部的事件中樞儲存體複製資料,略過輸送量單位或處理單位輸出配額,並將輸出節省下來以供串流分析或 Spark 等其他處理讀取器使用。

一旦設定,事件中樞擷取會在您傳送第一個事件時自動執行,並且持續執行。 為了讓下游處理更容易知道流程正在運作,事件中樞會在沒有資料時寫入空白檔案。 此流程提供可預測的步調和標記,可同步發行您的批次處理器。

設定事件中樞擷取

您可以使用 Azure 入口網站或使用 Azure Resource Manager 範本,在建立事件中樞時設定擷取功能。 如需詳細資訊,請參閱下列文章:

注意

如果您針對現有的事件中樞啟用擷取功能,此功能會在開啟之後擷取抵達事件中樞的事件。 其不會在功能開啟之前,擷取存在於事件中樞的事件。

事件中樞擷取的收費方式

擷取功能包含在進階層中,因此該層不需要額外費用。 針對標準層,此功能是每個月收費,而且費用直接與命名空間所購買的輸送量單位或處理單位數目成正比。 當輸送量單位或處理單位增加和減少時,事件中樞擷取也會增加和減少以提供相符的效能。 計量會串聯地發生。 如需定價詳細資訊,請參閱事件中樞定價

擷取不會耗用輸出配額,因為其為分開計費。

事件格線整合

您可以使用事件中樞命名空間作為其來源,建立 Azure 事件格線訂用帳戶。 下列教學課程會示範如何使用事件中樞作為來源、Azure Functions 應用程式作為接收,建立事件格線訂用帳戶:使用事件格線和 Azure Functions 將擷取的事件中樞資料處理並移轉至 Azure Synapse Analytics

探索擷取的檔案

若要瞭解如何探索擷取的 Avro 檔案,請參閱探索擷取的 Avro 檔案

Azure 儲存體帳戶作為目的地

若要在具有 Azure 儲存體作為擷取目的地的事件中樞上啟用擷取,或以 Azure 儲存體作為擷取目的地更新事件中樞的屬性,使用者或服務主體必須具有在儲存體帳戶範圍指派下列權限的 RBAC 角色。 

Microsoft.Storage/storageAccounts/blobServices/containers/write
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write

 

如果沒有上述權限,您將會看到下列錯誤:

Generic: Linked access check failed for capture storage destination <StorageAccount Arm Id>.
User or the application with object id <Object Id> making the request doesn't have the required data plane write permissions.
Please enable Microsoft.Storage/storageAccounts/blobServices/containers/write, Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write permission(s) on above resource for the user or the application and retry.
TrackingId:<ID>, SystemTracker:mynamespace.servicebus.windows.net:myhub, Timestamp:<TimeStamp>

儲存體 Blob 資料擁有者是具有上述權限的內建角色,因此請將使用者帳戶或服務主體新增至此角色。  

下一步

事件中樞擷取是將資料載入 Azure 中最簡單的方式。 使用 Azure Data Lake、Azure Data Factory 和 Azure HDInsight,即可使用您選擇的工具和平台,以您需要的規模執行批次處理和其他分析。

了解如何使用 Azure 入口網站和 Azure Resource Manager 範本啟用此功能: