Share via


在 Azure 資料總管叢集上設定串流擷取

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

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

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

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

選擇適當的串流擷取類型

支援兩種串流內嵌類型:

擷取類型 Description
資料連線 事件中樞、IoT 中樞和事件方格資料連線可以使用串流擷取,前提是已在叢集層級上啟用。 使用串流擷取的決策是根據目標資料表上設定的串流擷取原則來完成。
如需管理資料連線的資訊,請參閱事件中樞IoT 中樞事件方格
自訂擷取 自訂擷取需要您撰寫使用其中一個 Azure Data Explorer用戶端程式庫的應用程式。
請使用本主題中的資訊來設定自訂擷取。 您也可能覺得 C# 串流擷取範例應用程式很有用。

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

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

注意

您可以使用 Azure 入口網站 或以程式設計方式在 C# 中管理叢集上啟用停用串流擷取的程式。 如果您使用 C# 進行 自訂應用程式,您可能會發現使用程式設計方法更方便。

必要條件

效能與操作考量

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

  • VM 和叢集大小:串流擷取效能和容量會隨著 VM 和叢集大小增加而調整。 並行擷取要求數限制為每個核心六個要求。 例如,針對 16 核心 SKU,例如 D14 和 L16,最大支援的負載是 96 個並行擷取要求。 針對兩個核心 SKU,例如 D11,最大支援的負載是 12 個並行擷取要求。
  • 資料大小限制:串流擷取要求的資料大小限制為 4 MB。 這包括在擷取期間為更新原則建立的任何資料。
  • 結構描述更新:結構描述更新 (例如建立和修改資料表和擷取對應) 最多可能需要留五分鐘給串流擷取服務。 如需詳細資訊,請參閱串流擷取和結構描述變更
  • SSD 容量:在叢集上啟用串流擷取,即使資料未透過串流擷取,也會使用叢集機器的本機 SSD 磁片的一部分來串流擷取資料,並減少適用于經常性快取的儲存體。

在您的叢集上啟用串流擷取

在使用串流擷取之前,您必須在叢集上啟用功能,並定義 串流擷取原則。 您可以在 建立叢集時啟用此功能,或 將其新增至現有的叢集

警告

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

在建立新的叢集時啟用串流擷取

您可以使用 Azure 入口網站 或在 C# 中以程式設計方式建立新的叢集時啟用串流擷取。

使用建立 Azure Data Explorer叢集和資料庫中的步驟建立叢集,在 [組態] 索引標籤中,選取 [串流擷取>開啟]。

在 Azure Data Explorer中建立叢集時啟用串流擷取。

在現有的叢集上啟用串流擷取

如果您有現有的叢集,您可以使用 Azure 入口網站 或以程式設計方式在 C# 中啟用串流擷取。

  1. 在 Azure 入口網站中,移至您的 Azure 資料總管叢集。

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

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

  4. 選取 [儲存]。

    在 Azure Data Explorer中開啟串流擷取。

建立目標資料表並定義原則

建立資料表以接收串流擷取資料,並使用 C# 中的Azure 入口網站或以程式設計方式定義其相關原則。

  1. 在 Azure 入口網站中瀏覽至您的叢集。

  2. 選取 [查詢] 。

    在 Azure Data Explorer 入口網站中選取查詢,以啟用串流擷取。

  3. 若要建立資料表以透過串流擷取來接收資料,請將下列命令複製到 [查詢窗格],然後選取 [執行]。

    .create table TestTable (TimeStamp: datetime, Name: string, Metric: int, Source:string)
    

    建立資料表以串流擷取至 Azure Data Explorer。

  4. 將下列其中一個命令複製到 [查詢窗格],然後選取 [執行]。 這樣會在您建立的資料表或包含該資料表的資料庫上,定義串流擷取原則

    提示

    在資料庫層級定義的原則套用至資料庫中所有現有和未來的資料表。 當您在資料庫層級啟用原則時,不需要針對每個資料表啟用原則。

    • 若要在您建立的資料表上定義原則,請使用:

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

      .alter database StreamingTestDb policy streamingingestion enable
      

    在 Azure Data Explorer中定義串流擷取原則。

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

使用慣用的語言,建立應用程式以將資料內嵌至叢集。

using System.IO;
using System.Threading.Tasks;
using Kusto.Data; // Requires Package Microsoft.Azure.Kusto.Data
using Kusto.Data.Common;
using Kusto.Ingest; // Requires Package Microsoft.Azure.Kusto.Ingest

namespace StreamingIngestion;
class Program
{
    static async Task Main(string[] args)
    {
        var clusterPath = "https://<clusterName>.<region>.kusto.windows.net";
        var appId = "<appId>";
        var appKey = "<appKey>";
        var appTenant = "<appTenant>";
        // Create Kusto connection string with App Authentication
        var connectionStringBuilder = new KustoConnectionStringBuilder(clusterPath)
            .WithAadApplicationKeyAuthentication(
                applicationClientId: appId,
                applicationKey: appKey,
                authority: appTenant
            );
        // Create a disposable client that will execute the ingestion
        using var client = KustoIngestFactory.CreateStreamingIngestClient(connectionStringBuilder);
        // Ingest from a compressed file
        var fileStream = File.Open("MyFile.gz", FileMode.Open);
        // Initialize client properties
        var ingestionProperties = new KustoIngestionProperties(databaseName: "<databaseName>", tableName: "<tableName>");
        // Create source options
        var sourceOptions = new StreamSourceOptions { CompressionType = DataSourceCompressionType.GZip, };
        // Ingest from stream
        await client.IngestFromStreamAsync(fileStream, ingestionProperties, sourceOptions);
    }
}

停用叢集上的串流擷取

警告

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

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

卸除串流擷取原則

您可以使用 Azure 入口網站 或在 C# 中以程式設計方式卸載串流擷取原則。

  1. 在Azure 入口網站中,移至您的 Azure Data Explorer 叢集,然後選取 [查詢]。

  2. 若要從資料表卸除串流擷取原則,請將下列命令複製到 [查詢窗格],然後選取 [執行]。

    .delete table TestTable policy streamingingestion
    

    刪除 Azure Data Explorer中的串流擷取原則。

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

  4. 在 [組態] 窗格中,選取 [關閉] 以停用 [串流擷取]。

  5. 選取 [儲存]。

    關閉 Azure Data Explorer中的串流擷取。

限制

  • 必須預先建立資料對應,才能在串流擷取中使用。 個別的串流擷取要求不負責內嵌資料對應。
  • 無法在串流擷取資料上設定延伸區標記
  • 更新原則。 更新原則只能參考來源資料表中新內嵌的資料,而不是資料庫中的任何其他資料或資料表。
  • 如果在作為 追蹤者資料庫領導者的叢集上啟用串流擷取,則必須在下列叢集上啟用串流擷取,才能遵循串流擷取資料。 同樣適用于叢集資料是否透過Data Share共用。

後續步驟