共用方式為


在 Azure Synapse 數據總管集區上設定串流擷取 (預覽)

這很重要

Azure Synapse Analytics 數據總管 (預覽版) 將於 2025 年 10 月 7 日淘汰。 在此日期之後,將會刪除在 Synapse 數據總管上執行的工作負載,且相關聯的應用程式數據將會遺失。 強烈建議移轉至 Microsoft Fabric 中的 Eventhouse

Microsoft雲端移轉處理站 (CMF) 計劃的設計目的是協助客戶移轉至 Fabric。 此計劃提供客戶實作鍵盤培訓資源,不收取任何費用。 這些資源會指派 6-8 周,並具有預先定義且已同意的範圍。 客戶提名會由 Microsoft 帳戶小組接受,或直接透過向 CMF 小組提交 協助申請 來接受。

當您在擷取和查詢之間需要低延遲時,串流擷取對於載入數據很有用。 請考慮在下列案例中使用串流擷取:

  • 需要少於一秒的延遲。
  • 若要優化許多數據表的作業處理,其中每個數據表的數據串流相對較小(每秒記錄數筆),但整體數據擷取量很高(每秒數千筆記錄)。

如果每個數據表中的數據串流很高(每小時超過 4 GB),請考慮使用 批次擷取

若要深入瞭解不同的擷取方法,請參閱 數據擷取概觀

選擇適當的串流擷取類型

支援兩種串流擷取類型:

擷取類型 Description
事件中樞IoT中樞 中樞設定為資料表串流資料來源。
如需設定這些設定的相關信息,請參閱 事件中樞
自訂擷取 自訂擷取需要您撰寫應用程式,以使用其中一個 Azure Synapse Analytics 資料總管用戶端程式庫
使用本主題中的資訊來設定自定義擷取。 您也可能覺得 C# 串流擷取範例應用程式很有用。

使用下表可協助您選擇適合您環境的擷取類型:

標準 事件中樞/IoT 中樞 自訂擷取
擷取起始與可供查詢的數據之間的數據延遲 較長的延遲時間 較短的延遲
開發額外成本 快速且容易設定,不需要開發額外負荷 創建應用程式以讀取數據、處理錯誤,並確保數據一致性的高開發成本

備註

如果 Synapse 工作區使用已啟用資料外流保護的受控虛擬網路,則無法將資料從事件中樞擷取至資料總管集區。

先決條件

  • Azure 訂用帳戶。 建立免費的 Azure 帳戶

  • 使用 Synapse StudioAzure 入口網站建立資料總管集區

  • 建立Data Explorer資料庫。

    1. 在 Synapse Studio 的左側窗格上,選取 [資料]

    2. 選取 + (新增資源) >[資料總管集區],並使用下列資訊:

      Setting 建議的值 Description
      集區名稱 contosodataexplorer 要使用的 Data Explorer 集區的名稱
      名稱 TestDatabase 資料庫名稱在叢集內必須是唯一而不重複。
      預設保留期限 365 保證資料持續可供查詢的時間範圍 (天)。 時間範圍是從資料被導入的時間開始測量的。
      預設快取期間 31 在 SSD 儲存裝置或 RAM 中 (而非長期儲存裝置),讓受到頻繁查詢的資料維持可用狀態的時間範圍 (天)。
    3. 選取 [建立] 以建立資料庫。 建立時間通常不到一分鐘。

  • 取得查詢和數據擷取端點。
    1. 在 Synapse Studio 的左側窗格上,選取 [管理] [資料總管集區]>

    2. 選取您想要使用的 [資料探索器] 集區以查看其詳細資訊。

      [數據總管集區] 畫面的螢幕快照,其中顯示現有集區的清單。

    3. 記下查詢和數據擷取端點。 設定數據總管集區的連線時,請使用查詢端點作為叢集。 設定數據擷取的 SDK 時,請使用資料擷取端點。

      [數據總管] 集區屬性窗格的螢幕快照,其中顯示查詢和數據擷取 URI 位址。

效能和作業考慮

可能影響串流擷取的主要因素如下:

  • 計算規格:串流擷取效能及容量會隨著 Data Explorer 池大小的增加而擴展。 並行擷取要求的數目限制為每個核心6個。 例如,針對 16 核心工作負載類型,例如計算優化 (大型) 和記憶體優化 (大型),最大支援的負載是 96 個並行擷取要求。 若為雙核心工作負載類型,例如計算最佳化 (超小型),則支援的最大負載為 12 個並行擷取要求。
  • 數據大小限制:串流擷取要求的數據大小限製為4 MB。
  • 架構更新:串流擷取服務最多可能需要五分鐘的時間,例如建立和修改數據表和擷取對應等架構更新。 如需詳細資訊,請參閱 串流擷取和架構變更
  • SSD 容量:在數據總管集區上啟用串流擷取,即使數據未透過串流擷取,也會使用數據總管集區計算機的本機 SSD 磁碟的一部分來串流擷取數據,並減少可供經常性快取使用的記憶體。

在數據總管集區上啟用串流擷取

您必須先在數據總管集區上啟用功能,並定義 串流擷取原則,才能使用串流擷取。 您可以在 建立數據總管集區時啟用此功能,或 將其新增至現有的數據總管集區

警告

啟用串流擷取之前,請先檢閱 限制

在建立新的數據總管集區時啟用串流擷取

您可以使用 Azure Synapse Studio 或 Azure 入口網站,在建立新的數據總管集區時啟用串流擷取。

根據使用 Synapse Studio 建立資料總管集區中的步驟建立資料總管集區時,請在 [其他設定] 索引標籤中,選取 [串流擷取]> [已啟用]

在 Azure Synapse 數據總管中建立數據總管集區時,啟用串流擷取。

在現有的數據總管集區上啟用串流擷取

如果您有現有的數據總管集區,您可以使用 Azure 入口網站來啟用串流擷取。

  1. 在 Azure 入口網站中,移至您的資料總管集區。
  2. [設定] 中,選取 [ 組態]。
  3. 在 [ 組態 ] 窗格中,選取 [開啟 ] 以啟用 串流擷取
  4. 選取 [儲存]。

建立目標數據表並定義原則

建立數據表以接收串流擷取數據,並使用 Azure Synapse Studio 或 Azure 入口網站定義其相關原則。

  1. 在 Synapse Studio 的左側窗格上,選取 [開發]

  2. KQL 指令碼下方,選取+ (新增資源) >[KQL 指令碼]。 您可以在右側窗格上命名指令碼。

  3. 連線至 選單中,選取 contosodataexplorer

  4. 在 [使用資料庫] 功能表中,選取 [TestDatabase]

  5. 貼上下列命令,並選取 [執行] 以建立資料表。

    .create table TestTable (TimeStamp: datetime, Name: string, Metric: int, Source:string)
    
  6. 將下列其中一個命令複製到 [ 查詢] 窗格中 ,然後選取 [ 執行]。 這會定義您所建立數據表或包含數據表的資料庫上的 串流擷取 原則。

    小提示

    在資料庫層級定義的原則會套用至資料庫中所有現有和未來的數據表。

    • 若要在您所建立的數據表上定義原則,請使用:

      .alter table TestTable policy streamingingestion enable
      
    • 若要在包含您所建立數據表的資料庫上定義原則,請使用:

      .alter database StreamingTestDb policy streamingingestion enable
      

建立串流擷取應用程式以將數據內嵌至數據總管集區

使用慣用的語言,建立應用程式以將數據匯入至 Data Explorer 群組。 針對 poolPath 變數,請使用您在 必要條件中記下的查詢端點。

using Kusto.Data;
using Kusto.Ingest;
using System.IO;
using Kusto.Data.Common;

namespace StreamingIngestion
{
    class Program
    {
        static void Main(string[] args)
        {
            string poolPath = "https://<Poolname>.<WorkspaceName>.kusto.windows.net";
            string appId = "<appId>";
            string appKey = "<appKey>";
            string appTenant = "<appTenant>";
            string dbName = "<dbName>";
            string tableName = "<tableName>";

            // Create Kusto connection string with App Authentication
            var csb =
                new KustoConnectionStringBuilder(poolPath)
                    .WithAadApplicationKeyAuthentication(
                        applicationClientId: appId,
                        applicationKey: appKey,
                        authority: appTenant
                    );

            // Create a disposable client that will execute the ingestion
            using (IKustoIngestClient client = KustoIngestFactory.CreateStreamingIngestClient(csb))
            {
                // Initialize client properties
                var ingestionProperties =
                    new KustoIngestionProperties(
                        databaseName: dbName,
                        tableName: tableName
                    );

                // Ingest from a compressed file
                var fileStream = File.Open("MyFile.gz", FileMode.Open);
                // Create source options
                var sourceOptions = new StreamSourceOptions()
                {
                    CompressionType = DataSourceCompressionType.GZip,
                };
                // Ingest from stream
                var status = client.IngestFromStreamAsync(fileStream, ingestionProperties, sourceOptions).GetAwaiter().GetResult();
            }
        }
    }
}

在資料總管集區上停用串流擷取

警告

停用串流擷取可能需要幾小時的時間。

停用數據總管集區上的串流擷取之前,請先從所有相關數據表和資料庫卸除 串流擷取原則 。 拿掉串流擷取原則會觸發數據總管集區內的數據重新排列。 串流擷取資料會從初始儲存體移至資料行存放區中的永久儲存體 (延伸區或分區)。 此程式可能需要幾秒鐘到幾個小時的時間,視初始記憶體中的數據量而定。

卸除串流擷取原則

您可以使用 Azure Synapse Studio 或 Azure 入口網站來卸除串流擷取原則。

  1. 在 Synapse Studio 的左側窗格上,選取 [開發]

  2. KQL 指令碼下方,選取+ (新增資源) >[KQL 指令碼]。 您可以在右側窗格上命名指令碼。

  3. 連線至 選單中,選取 contosodataexplorer

  4. 在 [使用資料庫] 功能表中,選取 [TestDatabase]

  5. 貼上下列命令,並選取 [執行] 以建立資料表。

    .delete table TestTable policy streamingingestion
    
  6. 在 Azure 入口網站中,移至您的資料總管集區。

  7. [設定] 中,選取 [ 組態]。

  8. 在 [ 組態 ] 窗格中,選取 [開啟 ] 以啟用 串流擷取

  9. 選取 [儲存]。

局限性

  • 如果資料庫本身或其任何資料表已定義並啟用串流擷取原則,則該資料庫不支援資料庫游標
  • 必須預先建立資料對應,才能在串流擷取中使用。 個別串流資料引入要求無法容納內嵌資料映射。
  • 無法在串流擷取數據上設定範圍標籤
  • 更新原則。 更新原則只能參考源數據表中新擷取的數據,而不能參考資料庫中的任何其他數據或數據表。
  • 如果串流擷取用於資料庫的任何數據表上,則此資料庫無法做為追蹤資料庫領導者或作為 Azure Synapse Analytics Data Share 的數據提供者。

後續步驟