事件中樞資料連線 (預覽)
Azure 事件中樞是一個巨量資料串流平台與事件擷取服務。 Azure Synapse 數據總管提供客戶自控事件中樞的持續擷取。
事件中樞擷取管線會以數個步驟將事件傳輸至 Azure Synapse 數據總管。 您會先在 Azure 入口網站 中建立事件中樞。 接著,您會在 Azure Synapse 數據總管中建立目標數據表,而 特定格式的數據將會使用指定的 擷取屬性來內嵌。 事件中樞連線必須知道 事件路由。 數據會根據 事件系統屬性對應,內嵌選取的屬性。 建立事件中樞的連線 ,以 建立事件中樞 並 傳送事件。 此程式可以透過 Azure 入口網站、以程序設計方式使用 C# 或 Python,或使用 Azure Resource Manager 範本來管理。
如需 Azure Synapse 數據總管中數據擷取的一般資訊,請參閱 Azure Synapse 數據總管數據擷取概觀。
資料格式
數據會以 EventData 物件的形式從事件中樞讀取。
請參閱 支援的格式。
注意
事件中樞不支援.raw格式。
您可以使用壓縮演算法來
GZip
壓縮資料。 在擷取屬性中指定Compression
。- 壓縮格式不支持數據壓縮(Avro、Parquet、ORC)。
- 壓縮的數據不支援自定義編碼和內嵌 系統屬性 。
內嵌屬性
擷取屬性會指示擷取程式、將數據路由傳送到何處,以及如何處理數據。 您可以使用 EventData.Properties 來指定事件擷取的擷取屬性。 您可以設定下列屬性:
屬性 | 說明 |
---|---|
Table | 現有目標數據表的名稱(區分大小寫)。 覆 Table 寫窗格上的 Data Connection 集合。 |
格式 | 資料格式。 覆 Data format 寫窗格上的 Data Connection 集合。 |
IngestionMappingReference | 要使用的現有 擷取對應 名稱。 覆 Column mapping 寫窗格上的 Data Connection 集合。 |
壓縮 | 數據壓縮、 None (預設)或 GZip 壓縮。 |
編碼方式 | 數據編碼,預設值為UTF8。 可以是任何 .NET 支援的編碼方式。 |
標籤 | 要與內嵌數據產生關聯的標記清單,格式化為 JSON 陣列字串。 使用標記時會有 效能影響 。 |
注意
只有在您建立數據連線之後才會加入佇列的事件才會內嵌。
事件路由
當您設定與 Azure Synapse 資料總管叢集的事件中樞連線時,您可以指定目標數據表屬性(資料表名稱、數據格式、壓縮和對應)。 資料預設路由也稱為 static routing
。
您也可以使用事件屬性,為每個事件指定目標數據表屬性。 聯機會動態路由傳送 EventData.Properties 中指定的數據,並覆寫此事件的靜態屬性。
在下列範例中,設定事件中樞詳細資料,並將天氣計量數據傳送至資料表 WeatherMetrics
。
資料格式為 json
。 mapping1
在資料表 WeatherMetrics
上預先定義 。
警告
此範例會使用 連接字串 驗證來連線到事件中樞,以簡化此範例。 不過,將 連接字串 硬式編碼到您的腳本時,需要高度信任應用程式,並帶來安全性風險。
針對長期且安全的解決方案,請使用下列其中一個選項:
- 無密碼驗證
- 將您的 連接字串 儲存在 Azure 金鑰保存庫 中,並使用此方法在您的程式代碼中擷取。
var eventHubNamespaceConnectionString=<connection_string>;
var eventHubName=<event_hub>;
// Create the data
var metric = new Metric { Timestamp = DateTime.UtcNow, MetricName = "Temperature", Value = 32 };
var data = JsonConvert.SerializeObject(metric);
// Create the event and add optional "dynamic routing" properties
var eventData = new EventData(Encoding.UTF8.GetBytes(data));
eventData.Properties.Add("Table", "WeatherMetrics");
eventData.Properties.Add("Format", "json");
eventData.Properties.Add("IngestionMappingReference", "mapping1");
eventData.Properties.Add("Tags", "['mydatatag']");
// Send events
var eventHubClient = EventHubClient.CreateFromConnectionString(eventHubNamespaceConnectionString, eventHubName);
eventHubClient.Send(eventData);
eventHubClient.Close();
事件系統屬性對應
系統屬性會儲存事件中樞服務所設定的屬性,此時事件會加入佇列。 Azure Synapse 數據總管事件中樞聯機會將選取的屬性內嵌到數據表中的數據登陸中。
注意
- 系統屬性支援
json
和表格式格式 (csv
tsv
等等),而且不支援壓縮的數據。 使用不支援的格式時,數據仍會內嵌,但會忽略屬性。 - 針對表格式數據,系統屬性僅支援單一記錄事件訊息。
- 針對 JSON 數據,系統屬性也支援多重記錄事件訊息。 在這種情況下,系統屬性只會新增至事件訊息的第一筆記錄。
- 針對
csv
對應,屬性會以 [系統屬性] 資料表中 所列的順序,在記錄開頭新增屬性 。 - 針對
json
對應,屬性會根據 [系統屬性] 資料表中的屬性名稱新增。
系統屬性
事件中樞會公開下列系統屬性:
屬性 | 資料類型 | 描述 |
---|---|---|
x-opt-enqueued-time | Datetime | 加入佇列事件的 UTC 時間 |
x-opt-sequence-number | long | 事件中樞分割數據流內的事件邏輯序號 |
x-opt-offset | 字串 | 事件中樞數據分割數據流的位移。 位移標識碼在事件中樞數據流的數據分割內是唯一的 |
x-opt-publisher | 字串 | 如果訊息已傳送至發行者端點,則發行者名稱 |
x-opt-partition-key | 字串 | 儲存事件之對應分割區的數據分割索引鍵 |
如果您在數據表的 [數據源] 區段中選取 [事件系統屬性],則必須在數據表架構和對應中包含屬性。
架構對應範例
數據表架構對應範例
如果您的資料報含三個資料列 (Timespan
、 Metric
和 Value
) 以及您包含的屬性是 x-opt-enqueued-time
和 x-opt-offset
,請使用此命令來建立或改變資料表架構:
.create-merge table TestTable (TimeStamp: datetime, Metric: string, Value: int, EventHubEnqueuedTime:datetime, EventHubOffset:string)
CSV 對應範例
執行下列命令,將數據新增至記錄的開頭。 請注意序數值。
.create table TestTable ingestion csv mapping "CsvMapping1"
'['
' { "column" : "Timespan", "Properties":{"Ordinal":"2"}},'
' { "column" : "Metric", "Properties":{"Ordinal":"3"}},'
' { "column" : "Value", "Properties":{"Ordinal":"4"}},'
' { "column" : "EventHubEnqueuedTime", "Properties":{"Ordinal":"0"}},'
' { "column" : "EventHubOffset", "Properties":{"Ordinal":"1"}}'
']'
JSON 對應範例
數據會使用系統屬性對應來新增。 執行以下命令:
.create table TestTable ingestion json mapping "JsonMapping1"
'['
' { "column" : "Timespan", "Properties":{"Path":"$.timestamp"}},'
' { "column" : "Metric", "Properties":{"Path":"$.metric"}},'
' { "column" : "Value", "Properties":{"Path":"$.value"}},'
' { "column" : "EventHubEnqueuedTime", "Properties":{"Path":"$.x-opt-enqueued-time"}},'
' { "column" : "EventHubOffset", "Properties":{"Path":"$.x-opt-offset"}}'
']'
事件中樞連線
注意
為了獲得最佳效能,請在與 Azure Synapse 數據總管叢集相同的區域中建立所有資源。
建立事件中樞
如果您還沒有事件中樞, 請建立事件中樞。 聯機到事件中樞可以透過 Azure 入口網站、以程序設計方式使用 C# 或 Python,或使用 Azure Resource Manager 範本來管理。
注意
- 數據分割計數無法變更,因此設定分割區計數時,您應該考慮長期調整。
- 取用者群組 每個取用者都必須 是唯一的。 建立專用於 Azure Synapse 數據總管連線的取用者群組。
傳送事件
請參閱產生數據的範例應用程式,並將其傳送至事件中樞。
如需如何產生範例數據的範例,請參閱 將數據從事件中樞內嵌至 Azure Synapse 數據總管
設定異地災害復原解決方案
事件中樞提供 異地災害復原 解決方案。
Azure Synapse 數據總管不支援 Alias
事件中樞命名空間。 若要在解決方案中實作異地災害復原,請建立兩個事件中樞數據連線:一個用於主要命名空間,另一個用於次要命名空間。 Azure Synapse 數據總管會接聽這兩個事件中樞連線。
注意
用戶必須負責實作從主要命名空間故障轉移到次要命名空間。