事件方格資料連線
事件方格內嵌是接聽 Azure 儲存體的管線,並會在訂閱的事件發生時,更新 Azure 資料總管以提取資訊。 Azure 資料總管提供從 Azure 儲存體 (Blob 記憶體和 ADLSv2) 連續擷取,並透過 Azure 事件中樞 將這些通知串流至 Azure 數據總管的 blob 建立或 Blob 重新命名通知的 Azure 事件方格 訂用帳戶。
事件方格擷取管線會經過數個步驟。 您會在 Azure 數據總管中建立目標數據表,以 擷取特定格式 的數據。 然後在 Azure 數據總管中建立事件方格數據連線。 事件方格數據連線必須知道 事件路由 資訊,例如要傳送數據的數據表和數據表對應。 您也可以指定 擷取屬性,其中描述要內嵌的數據、目標數據表和對應。 您可以產生範例數據並上傳 Blob,或重新命名 Blob 以測試您的連線。 擷取之後刪除 Blob 。
事件方格擷取可以透過 Azure 入口網站、使用擷取精靈、以程序設計方式搭配 C# 或 Python,或使用 Azure Resource Manager 範本來管理。
如需 Azure 數據總管中數據擷取的一般資訊,請參閱 Azure 數據總管數據擷取概觀。
事件方格數據連線驗證機制
受控識別型數據連線(建議):使用受控識別 型數據連線是聯機至數據源的最安全方式。 它提供從數據源擷取數據的能力的完整控制權。 使用受控識別設定事件方格資料連線需要下列步驟:
- 將受控識別新增至叢集。
- 將許可權授與數據源上的受控識別。 若要從 Azure 儲存體 擷取數據,受控識別至少必須具有 Azure 儲存體 帳戶的記憶體 Blob 數據讀取器許可權。
- 將許可權授與事件中樞上的受控識別。 若要從事件中樞擷取 Blob 通知,受控識別必須具有 Azure 事件中樞 Azure 事件中樞 數據接收者許可權。
- 在目標資料庫上設定受控識別原則。
- 使用受控識別驗證來擷取數據,建立數據連線。
警告
- 如果從數據源移除受控識別許可權,數據連線將無法再運作,而且無法從數據源擷取數據。
- 如果在串流處理 Blob 通知的現有事件中樞命名空間上停用本機驗證,您必須針對數據連線使用受控識別驗證,並正確地設定資源。 如需詳細資訊,請參閱 已知事件方格問題。
金鑰型資料連線:如果未為數據連線指定受控識別驗證,則聯機會自動預設為密鑰型驗證。 索引鍵型聯機會使用資源 連接字串 擷取數據,例如 Azure 事件中樞 連接字串。 Azure 數據總管會取得指定資源的資源 連接字串,並安全地加以儲存。 接著會使用 連接字串 從數據源擷取數據。
警告
如果輪替密鑰,數據連線將無法再運作,而且無法從數據源擷取數據。 若要修正此問題,請更新或重新建立數據連線。
資料格式
- 請參閱 支援的格式。
- 請參閱 支援的壓縮。
原始未壓縮的數據大小應該是 Blob 元數據的一部分,否則 Azure 數據總管會估計它。 每個檔案的擷取未壓縮大小限製為6 GB。
注意
在 Azure 儲存體帳戶,您可以針對
BlobStorage
、StorageV2
或ADLS Gen2 設定事件方格通知訂閱。
內嵌屬性
您可以透過 Blob 元數據指定 Blob 擷取的擷取屬性 。 您可以設定下列屬性:
屬性 | 說明 |
---|---|
rawSizeBytes |
未經壓縮的數據大小。 針對 Avro/ORC/Parquet,這是套用格式特定壓縮之前的大小。 將此屬性設定為未壓縮的數據大小,以位元組為單位提供原始數據大小。 |
kustoDatabase |
目標資料庫的區分大小寫名稱。 根據預設,數據會內嵌至與數據連線相關聯的目標資料庫。 使用這個屬性來覆寫預設資料庫,並將數據傳送至不同的資料庫。 若要這樣做,您必須先 將連線設定為多資料庫連線。 |
kustoTable |
現有目標數據表的區分大小寫名稱。 覆 Table 寫窗格上的 Data Connection 集合。 |
kustoDataFormat |
資料格式 覆 Data format 寫窗格上的 Data Connection 集合。 |
kustoIngestionMappingReference |
要使用的現有 擷取對應 名稱。 覆 Column mapping 寫窗格上的 Data Connection 集合。 |
kustoIgnoreFirstRecord |
如果設定為 true ,Kusto 會忽略 Blob 的第一個數據列。 在表格式數據中使用 #CSV、TSV 或類似格式數據來忽略標頭。 |
kustoExtentTags |
字串,表示 將附加至結果範圍的標記 。 |
kustoCreationTime |
覆 寫 Blob 的範圍建立時間 ,格式為 ISO 8601 字串。 用於回填。 |
事件路由
當您建立叢集的數據連線時,您可以指定要傳送內嵌數據的位置路由。 預設路由會傳送至與目標資料庫相關聯之 連接字串 中指定的目標數據表。 數據的預設路由也稱為 靜態路由。 您可以使用事件資料屬性來指定資料的替代路由。
將事件數據路由傳送至替代資料庫
默認會關閉將數據路由傳送至替代資料庫。 若要將數據傳送至不同的資料庫,您必須先將連接設定為多資料庫連接。 您可以在 Azure 入口網站、C#、Python 或 ARM 範本中執行此動作。 用來允許資料庫路由的使用者、群組、服務主體或受控識別,至少必須具有 叢集的參與者 角色和寫入許可權。 如需詳細資訊,請參閱 建立 Azure 數據總管的事件方格數據連線。
若要指定替代資料庫,請設定資料庫擷取屬性。
警告
指定替代資料庫而不將連接設定為多資料庫數據連線,會導致擷取失敗。
將事件數據路由傳送至替代數據表
設定與 Azure 資料總管叢集的 Blob 記憶體連線時,請指定目標資料表屬性:
- 資料表名稱
- 數據格式
- 對應
您也可以使用 Blob 元數據,為每個 Blob 指定目標資料表屬性。 數據會動態路由,如擷取屬性所指定。
下列範例示範如何在上傳 Blob 元數據之前,先在 Blob 元數據上設定擷取屬性。 Blob 會路由傳送至不同的數據表。
此外,您可以指定目標資料庫。 事件方格數據連線是在特定資料庫的內容內建立。 因此,此資料庫是數據連線的預設資料庫路由。 若要將數據傳送至不同的資料庫,請設定 「KustoDatabase」 擷取屬性,並將數據連線設定為多資料庫數據連接。 預設會停用將數據路由傳送至另一個資料庫(不允許)。 設定與數據連線資料庫不同的資料庫擷取屬性,而不允許數據路由傳送至多個資料庫(將連接設定為多資料庫數據連接),將導致擷取失敗。
如需詳細資訊,請參閱 上傳 Blob。
var container = new BlobContainerClient("<storageAccountConnectionString>", "<containerName>");
await container.CreateIfNotExistsAsync();
var blob = container.GetBlobClient("<blobName>");
// Blob is dynamically routed to table `Events`, ingested using `EventsMapping` data mapping
await blob.SetMetadataAsync(
new Dictionary<string, string>
{
{ "rawSizeBytes", "4096" }, // the uncompressed size is 4096 bytes
{ "kustoTable", "Events" },
{ "kustoDataFormat", "json" },
{ "kustoIngestionMappingReference", "EventsMapping" },
{ "kustoDatabase", "AnotherDB" }
}
);
await blob.UploadAsync(BinaryData.FromString(File.ReadAllText("<filePath>")));
上傳 Blob
您可以從本機檔案建立 Blob、將擷取屬性設定為 Blob 元數據,然後上傳它。 如需範例,請參閱 使用事件方格數據連線。
注意
- 強烈建議使用
BlockBlob
來產生數據,因為usingAppendBlob
可能會導致非預期的行為。 - 使用 Azure Data Lake Gen2 記憶體 SDK 需要使用
CreateFile
來上傳檔案,最後Flush
將 close 參數設定為true
。 如需 Data Lake Gen2 SDK 正確使用方式的詳細範例,請參閱 使用事件方格數據連線。 - 在作業之後
CopyBlob
觸發擷取,不支援已啟用階層命名空間功能的記憶體帳戶。 - 當事件中樞端點未確認收到事件時,Azure 事件方格 會啟用重試機制。 如果此重試傳遞失敗,事件方格可以使用寄不出的信件程式,將未傳遞的事件傳遞至記憶體帳戶。 如需詳細資訊,請參閱 Event Grid 訊息傳遞與重試。
重新命名 Blob
使用 ADLSv2 時,您可以將 Blob 重新命名為觸發 Blob 擷取至 Azure 數據總管。 例如,請參閱 重新命名 Blob。
注意
使用記憶體生命週期刪除 Blob
Azure 資料總管不會在擷取之後刪除 Blob。 使用 Azure Blob 記憶體生命週期 來管理 Blob 刪除。 建議將 Blob 保留三到五天。
已知的事件方格問題
在沒有本機驗證的情況下運作
如果事件中樞命名空間上已停用本機驗證,其中包含用於串流通知的事件中樞,請使用下列步驟,確保使用受控識別正確地從記憶體流向事件中樞:
- 將系統指派的受控識別指派給記憶體帳戶的事件方格系統主題。 如需詳細資訊,請參閱 啟用系統主題的受控識別。
- 將事件中樞上的 Azure 事件中樞 數據傳送者角色指派給受控識別發件人許可權。 如需詳細資訊,請參閱 將身分識別新增至目的地上的 Azure 角色。
- 請確定事件方格訂用帳戶使用受控識別進行事件傳遞。 如需詳細資訊,請參閱 建立使用身分識別的事件訂用帳戶。
此外,將事件方格數據連線設定為使用受控識別驗證,讓 Azure 數據總管可以從事件中樞接收通知。
設定從 Azure 數據總管導出之檔案的事件方格擷取
使用 Azure 數據總管匯出用於事件方格擷取的檔案時,請注意:
- 如果提供給導出命令的 連接字串 或提供給外部數據表的 連接字串 是 ADLS Gen2 格式的連接字串,
abfss://filesystem@accountname.dfs.core.windows.net
但記憶體帳戶並未針對階層命名空間啟用,則不會觸發事件方格通知。 - 如果未針對階層命名空間啟用帳戶,連接字串 必須使用 Blob 記憶體格式(例如 ,
https://accountname.blob.core.windows.net
)。 即使使用ADLS Gen2連接字串,匯出仍如預期般運作,但不會觸發通知,而且事件方格擷取將無法運作。
模擬來自自定義元件的記憶體事件
使用自定義元件來模擬 Azure 儲存體 事件時,模擬事件必須嚴格遵守 Azure Blob 儲存體 事件架構,因為 Azure 數據總管會捨棄事件方格 SDK 無法剖析的事件。