共用方式為


在 Azure Synapse Analytics 資料總管集區上設定串流擷取 (預覽)

當您在內嵌和查詢之間需要低延遲時,串流擷取有助於載入資料。 在下列情節中,請考慮使用串流擷取:

  • 需要不到一秒的延遲。
  • 將許多資料表的操作處理最佳化,其中,進入每個資料表的資料串流相當小 (每秒幾筆記錄),但整體資料內嵌數量很大 (每秒上千筆記錄)。

如果進入每個資料表的資料串流很大 (每小時超過 4 GB),請考慮使用批次擷取

若要深入了解各種擷取方法,請參閱資料擷取概觀

選擇適當的串流擷取類型

支援兩種串流內嵌類型:

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

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

條件 事件中樞/IoT 中樞 自訂擷取
擷取初始和可供查詢的資料之間的資料延遲 延遲較長 延遲較短
開發額外負荷 快速又輕鬆的設定,無開發額外負荷 建立應用程式來內嵌資料、處理錯誤及確保資料一致性的開發額外負荷很高

注意

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

必要條件

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

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

  • 建立資料總管資料庫。

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

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

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

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

    2. 選取您要檢視詳細資料的資料總管集區。

      螢幕擷取畫面:資料總管集區畫面顯示了現有集區的清單。

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

      螢幕擷取畫面:資料總管集區屬性窗格顯示了查詢和資料擷取 URI 位址。

效能與操作考量

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

  • 計算規格:串流擷取效能和容量隨著資料總管集區大小增加而縮放。 並行擷取要求數限制為每個核心六個要求。 例如,若為 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
      

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

使用您慣用的語言建立應用程式,以將資料內嵌至資料總管集區。 針對 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 的資料提供者。

後續步驟