共用方式為


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

Azure Event Hubs 擷取功能會自動擷取流經 Event Hubs 到 Azure Blob StorageAzure Data Lake Storage 帳號的串流資料。 要控制事件中心何時儲存資料,你可以指定時間或大小區間。 你可以快速啟用或設定事件中心擷取功能。 它不需要管理成本來運行,且會隨著活動中心的容量自動擴展。

標準層使用 吞吐量單元,Premium 層則使用 處理單元。 Event Hubs Capture 簡化了將串流資料載入 Azure 的流程,讓您能專注於資料處理,而非資料擷取。

圖示顯示一個將事件中樞資料擷取到 Blob 儲存體或資料湖儲存體的流程。

使用事件中樞擷取以在相同資料流上處理即時和批次型的管線。 這種方法幫助你打造能隨著需求成長的解決方案。 如果您使用批次系統並計劃日後加入即時處理,或想為現有即時解決方案新增高效的冷路徑,Event Hubs Capture 能簡化串流資料的處理。

需要考量的重要事項

  • 當你不使用管理身份認證時,目的地儲存帳號(Blob Storage 或 Data Lake Storage)必須與事件中心同一個訂閱。

  • Event Hubs 不支援在高級 Azure Storage 帳號中擷取事件。

  • 事件中樞擷取支援會允許區塊 Blob 的非進階儲存體帳戶。

事件中樞擷取的運作方式

Event Hubs 作為具時間保留功能且持久的遙測資料匯入緩衝區,類似於分散式日誌。 分區式消費者模型促進了可擴展性。 每個資料分割都是獨立的資料區段,可獨立取用。 這些資料會在可設定的保留期後被刪除,因此活動中心不會 過於滿載。

Event Hubs Capture 允許你指定 Blob 儲存帳號與容器,或資料湖儲存帳號來儲存擷取的資料。 這些帳號可以位於與活動中心相同的區域,或是其他區域,這增加了彈性。

Event Hubs Capture 以 Apache Avro 格式撰寫擷取資料,這是一種緊湊、快速的二進位格式,提供豐富的資料結構與內嵌結構。 Hadoop 生態系統、Azure Stream Analytics 和 Azure Data Factory 都採用此格式。 本文後續章節將提供更多關於與 Avro 合作的資訊。

附註

擷取範圍

要控制擷取,請使用 Event Hubs Capture 設定一個視窗,設定最小大小與時間設定。 系統會套用 先贏 政策,意即第一個條件——無論是規模還是時間——達成時——就會觸發捕獲。 例如,如果你有一個十五分鐘、100 MB(MB)的擷取視窗,且每秒傳送 1 MB,大小視窗會先於時間視窗觸發。

每個分割區會獨立擷取資料,然後在擷取時寫入一個完整的區塊 Blob。 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

如果您的儲存體 Blob 變得暫時無法使用,事件中樞擷取會在您於事件中樞上設定的資料保留期間內保留您的資料。 當你的儲存帳號再次可用時,Event Hubs Capture 會回填資料。

擴展吞吐量單元或處理單元

在事件中心的標準層級中, 吞吐量單元 負責控制流量。 在高級層級中, 處理單元 控制流量。 Event Hubs Capture 直接從內部 Event Hubs 儲存複製資料,繞過吞吐量單元或處理單元的出口配額,並將你的出口資料儲存給其他處理讀取器,如 Stream Analytics 或 Apache Spark。

設定事件中心擷取後,它會在你傳送第一個事件時自動啟動並持續執行。 為了協助下游系統確認流程是否有效,Event Hubs 會在沒有資料可用時寫入空檔。 這個程序會提供可預測的頻率和標記,以供饋送給批次處理器。

設定事件中樞擷取

在建立事件中心時要設定 Capture,請使用 Azure 入口網站 或 Azure 資源管理器範本(ARM 範本)。 如需詳細資訊,請參閱下列文章:

附註

如果你為現有的事件中心啟用捕捉功能,該功能只會捕捉你 開啟後 抵達的事件。 它不會捕捉啟動前存在的事件。

事件中心擷取計費

Event Hubs Premium 等級包含擷取功能。 在標準層,Azure 會根據命名空間的吞吐量單位數量每月收取擷取費用。 當您將輸送量單位向上或向下調整時,事件中樞擷取會調整其計量以符合效能。 這些計量會同步調整。

擷取不會消耗出口配額,因為 Azure 會另外計費。

如需詳細資訊,請參閱事件中樞價格

整合 Azure Event Grid

您可以使用事件中樞命名空間作為其來源,建立 Azure 事件格線訂用帳戶。 欲了解更多如何建立以事件中心為來源、Azure Functions 應用程式作為匯入的事件網格訂閱的資訊,請參閱 「將擷取的事件中心資料遷移至 Azure Synapse Analytics」。

探索擷取的檔案

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

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>

為了解決這個問題,請將使用者帳號或服務主體加入 Storage Blob 資料擁有者 內建角色,該角色包含所需的權限。

Event Hubs Capture 提供了一種直接的方式將資料匯入 Azure。 透過 Data Lake Storage、Azure Data Factory 和 Azure HDInsight,你可以在任何規模下,使用熟悉的工具和平台進行批次處理和分析。

要啟用此功能,請使用 Azure 入口網站或 ARM 範本:

如需更多關於 Capture 目的地儲存帳戶的資料冗餘選項,請參閱 Blob 儲存的可靠性