將數據從事件中樞內嵌到 Azure Synapse 數據總管
記錄和遙測資料時,Azure Synapse 資料總管是快速且調整彈性高的資料探索服務。 Azure Synapse 資料總管提供事件中樞、IoT 中樞的擷取 (資料載入),及在 blob 容器寫入 blob。
Azure Synapse 數據總管提供從事件中樞擷取(數據載入)、巨量數據串流平臺和事件擷取服務。 事件中 樞可以近乎即時地每秒處理數百萬個事件。 在本文中,您會建立事件中樞、從 Azure Synapse 數據總管連線到該事件中樞,並查看數據流通過系統。
必要條件
Azure 訂用帳戶。 建立免費的 Azure 帳戶。
使用 Synapse Studio 或 Azure 入口網站建立資料總管集區
建立資料總管資料庫。
在 Synapse Studio 的左側窗格上,選取 [資料]。
選取 + (新增資源) >[資料總管集區],並使用下列資訊:
設定 建議的值 描述 集區名稱 contosodataexplorer 要使用的資料總管集區名稱 名稱 TestDatabase 資料庫名稱在叢集內必須是唯一而不重複。 預設保留期限 365 保證資料持續可供查詢的時間範圍 (天)。 系統會從內嵌資料的時間開始測量時間範圍。 預設快取期間 31 在 SSD 儲存裝置或 RAM 中 (而非長期儲存裝置),讓受到頻繁查詢的資料維持可用狀態的時間範圍 (天)。 選取 [建立] 以建立資料庫。 建立時間通常不到一分鐘。
建立事件中樞將傳送數據的目標數據表
在 Synapse Studio 的左側窗格上,選取 [開發]。
在 KQL 指令碼下方,選取+ (新增資源) >[KQL 指令碼]。 您可以在右側窗格上命名指令碼。
在 [連線至] 功能表中,選取 [contosodataexplorer]。
在 [使用資料庫] 功能表中,選取 [TestDatabase]。
貼上下列命令,並選取 [執行] 以建立資料表。
.create table TestTable (TimeStamp: datetime, Name: string, Metric: int, Source:string)
提示
確認資料表已成功建立。 在左側窗格上,選取 [資料]、[contosodataexplorer 其他功能表] 後,選取 [重新整理]。 在 contosodataexplorer 下方,展開資料表並確定 TestTable 資料表出現在清單中。
將下列命令複製到視窗中,然後選取 [執行] 以將傳入的 JSON 資料對應至資料表 (TestTable) 的資料行名稱與資料類型。
.create table TestTable ingestion json mapping 'TestMapping' '[{"column":"TimeStamp", "Properties": {"Path": "$.timeStamp"}},{"column":"Name", "Properties": {"Path":"$.name"}} ,{"column":"Metric", "Properties": {"Path":"$.metric"}}, {"column":"Source", "Properties": {"Path":"$.source"}}]'
我們建議針對數據連線使用 使用者指派的受控識別 或 系統指派的受控識別 (選擇性)。
產生數據的範例應用程式 ,並將其傳送至事件中樞。 將範例應用程式下載到您的系統。
Visual Studio 2019 以執行範例應用程式。
登入 Azure 入口網站
登入 Azure 入口網站。
建立事件中樞
在 Azure 入口網站 中使用 Azure Resource Manager 範本建立事件中樞。
若要建立事件中樞,請使用下列按鈕來啟動部署。 以滑鼠右鍵按兩下並選取 [在新視窗中開啟],讓您可以遵循本文的其餘步驟。
[部署至 Azure] 按鈕會帶您前往 Azure 入口網站。
選取您要在其中建立事件中樞的訂用帳戶,然後建立名為 test-hub-rg的資源群組。
在表單中填寫以下資訊。
針對下表中未列出的任何設定使用預設值。
設定 建議的值 欄位描述 訂用帳戶 您的訂用帳戶 選取您想要用於事件中樞的 Azure 訂用帳戶。 資源群組 test-hub-rg 建立新的資源群組。 Location 美國西部 選取本文的 [美國西部]。 針對生產系統,選取最符合您需求的區域。 在與 Azure Synapse 數據總管叢集相同的位置中建立事件中樞命名空間,以獲得最佳效能(對於具有高輸送量的事件中樞命名空間而言最為重要)。 命名空間名稱 唯一的命名空間名稱 選擇可識別命名空間的唯一名稱。 例如, mytestnamespace。 功能變數名稱 servicebus.windows.net 會附加至您提供的名稱。 名稱只能包含字母、數字和連字號。 名稱必須以字母開頭,而且必須以字母或數字結尾。 值長度必須介於 6 到 50 個字元之間。 事件中樞名稱 test-hub 事件中樞位於 命名空間底下,可提供唯一的範圍容器。 事件中樞名稱在命名空間內必須是唯一的。 取用者群組名稱 test-group 取用者群組可讓多個取用應用程式各自擁有事件數據流的個別檢視。 選取 [檢閱 + 建立]。
檢閱 所建立資源的摘要 。 選取 [建立],確認您要在訂用帳戶中建立資源。
選取 工具列上的 [通知 ] 以監視布建程式。 部署可能需要幾分鐘的時間才能成功,但您現在可以繼續下一個步驟。
驗證考慮
根據身分識別的類型,您使用 來向事件中樞進行驗證,您可能需要一些其他設定。
如果您使用使用者指派的受控識別向事件中樞進行驗證,請移至您的事件中樞>網路,然後在 [允許存取來源] 底下,選取 [所有網络] 並儲存變更。
如果您使用系統指派的受控識別向事件中樞進行驗證,請移至您的事件>中樞網路,然後在 [允許從所有網络存取] 或 [允許存取] 底下選取 [選取的網络],選取 [允許受信任的 Microsoft 服務 略過此防火牆並儲存變更。
聯機到事件中樞
現在,您可以從數據總管集區連線到事件中樞。 當此連線就緒時,流入事件中樞的數據會串流至您稍早在本文中建立的測試數據表。
選取 工具列上的 [通知 ],以確認事件中樞部署是否成功。
在您建立的資料總管集區下方,選取 [資料庫] >[TestDatabase]。
選取 [資料連線] 與 [新增資料連線]。
建立資料連線 (預覽)
使用下列資訊填寫窗體,然後選取 [ 建立]。
設定 | 建議的值 | 欄位描述 |
---|---|---|
資料連線名稱 | test-hub-connection | 您想要在 Azure Synapse 資料總管中建立的連接名稱。 |
訂用帳戶 | 事件中樞資源所在的訂用帳戶標識碼。 此欄位會自動填入。 | |
事件中樞命名空間 | 唯一的命名空間名稱 | 您稍早選擇用來識別命名空間的名稱。 |
事件中樞 | test-hub | 您建立的事件中樞。 |
取用者群組 | test-group | 您在事件中樞中定義的取用者群組。 |
事件系統屬性 | 選取相關的屬性 | 事件中 樞系統屬性。 如果每個事件訊息有多個記錄,系統會將系統屬性新增至第一筆記錄。 新增系統屬性時, 請建立 或 更新 數據表架構,並 對應 以包含選取的屬性。 |
壓縮 | None | 事件中樞訊息承載的壓縮類型。 支援的壓縮類型: None、Gzip。 |
受控識別 | 系統指派 | 數據總管叢集用來存取從事件中樞讀取的受控識別。 注意: 建立資料連線時: - 如果系統指派的 身分識別不存在,系統指派的身分識別會自動建立 - 受控識別會自動指派 Azure 事件中樞 數據接收者角色,並新增至數據總管叢集。 建議您確認已指派角色,並將身分識別新增至叢集。 |
目標資料表
路由擷取的數據有兩個選項: 靜態 和 動態。 在本文中,您會使用靜態路由,其中您會將數據表名稱、數據格式和對應指定為預設值。 如果事件中樞訊息包含數據路由資訊,此路由資訊將會覆寫預設設定。
填寫下列路由設定:
設定 建議的值 欄位描述 資料表名稱 TestTable 您在 TestDatabase 中建立的資料表。 資料格式 JSON 支援的格式包括 Avro、CSV、JSON、MULTILINE JSON、ORC、PARQUET、PSV、SCSV、SOHSV、TSV、TXT、TSVE、APACHEAVRO 和 W3CLOG。 對應 TestMapping 您在 TestDatabase 中建立的對應,會將傳入的數據對應至 TestTable 的數據行名稱和數據類型。 JSON、MULTILINE JSON 和 AVRO 的必要專案,以及其他格式的選擇性專案。 注意
- 您不必指定所有預設路由設定。 也會接受部分設定。
- 只有在您建立數據連線之後才會加入佇列的事件才會內嵌。
選取 建立。
事件系統屬性對應
注意
- 系統屬性支援
json
和表格式格式 (csv
tsv
等等),而且不支援壓縮的數據。 使用不支援的格式時,數據仍會內嵌,但會忽略屬性。 - 針對表格式數據,系統屬性僅支援單一記錄事件訊息。
- 針對 JSON 數據,系統屬性也支援多重記錄事件訊息。 在這種情況下,系統屬性只會新增至事件訊息的第一筆記錄。
- 針對
csv
對應,屬性會以 [系統屬性] 資料表中 所列的順序,在記錄開頭新增屬性 。 - 針對
json
對應,屬性會根據 [系統屬性] 資料表中的屬性名稱新增。
如果您在資料表的 [資料來源] 區段中選取 [事件系統屬性],則必須在資料表架構和對應中包含系統屬性。
複製連接字串
當您執行必要條件中列出的範例應用程式時,您需要事件中樞命名空間的 連接字串。
在您建立的事件中樞命名空間底下,選取 [共用存取原則],然後選取 [RootManageSharedAccessKey]。
複製 連接字串 - 主鍵。 您會將它貼到下一節。
產生範例資料
使用您下載的 範例應用程式 來產生資料。
警告
此範例會使用 連接字串 驗證來連線到事件中樞,以簡化範例。 不過,將 連接字串 硬式編碼到您的腳本時,需要高度信任應用程式,並帶來安全性風險。
針對長期且安全的解決方案,請使用下列其中一個選項:
- 無密碼驗證
- 將您的 連接字串 儲存在 Azure 金鑰保存庫 中,並使用此方法在程式代碼中擷取。
在 Visual Studio 中開啟範例應用程式方案。
在program.cs檔案中,將
eventHubName
常數更新為事件中樞的名稱,並將常數更新connectionString
為您從事件中樞命名空間複製的 連接字串。const string eventHubName = "test-hub"; // Copy the connection string ("Connection string-primary key") from your Event Hub namespace. const string connectionString = @"<YourConnectionString>";
建置並執行應用程式。 應用程式會將訊息傳送至事件中樞,並每隔 10 秒列印其狀態。
應用程式傳送一些訊息之後,請移至下一個步驟:檢閱數據流到事件中樞和測試數據表。
檢閱資料流程
透過應用程式產生數據,您現在可以看到該數據從事件中樞流向叢集中數據表的流程。
在 Azure 入口網站 事件中樞底下,您會在應用程式執行時看到活動尖峰。
若要檢查目前為止已有多少則訊息成功進入資料庫,請在測試資料庫中執行下列查詢。
TestTable | count
若要查看訊息的內容,請執行下列查詢:
TestTable
結果集應顯示下列圖片:
清除資源
如果您不打算再次使用事件中樞,請 清除test-hub-rg,以避免產生成本。
在 Azure 入口網站中選取最左側的 [資源群組],然後選取您所建立的資源群組。
如果左側功能表已折疊,請選取
以展開它。
在 test-resource-group 底下,選取 [刪除資源群組]。
在新視窗中,輸入要刪除的資源群組名稱(test-hub-rg),然後選取 [ 刪除]。