Sdílet prostřednictvím


Konfigurace příjmu streamovaných dat v clusteru Azure Data Exploreru

Streaming ingestace je užitečná pro načítání dat, když potřebujete nízkou latenci mezi ingestací a dotazem. Zvažte použití příjmu streamovaných dat v následujících scénářích:

  • Je vyžadována latence menší než sekunda.
  • Optimalizace provozního zpracování mnoha tabulek, kde je datový proud do každé tabulky relativně malý (několik záznamů za sekundu), ale celkový objem příjmu dat je vysoký (tisíce záznamů za sekundu).

Pokud je datový proud do každé tabulky vysoký (přes 4 GB za hodinu), zvažte použití frontovaného ingestování dat.

Další informace o různých metodách příjmu dat najdete v přehledu příjmu dat.

Ukázky kódu založené na předchozích verzích sady SDK najdete v archivovaného článku.

Zvolte odpovídající typ příjmu streamovaných dat.

Podporují se dva typy příjmu dat streamování:

Typ příjmu dat Popis
Datové připojení Služby Event Hubs, IoT Hub a datové připojení Event Grid mohou využívat streamovací příjem, pokud je povoleno na úrovni clusteru. Rozhodnutí o použití příjmu streamovaných dat se provádí podle zásad příjmu streamování nakonfigurovaných v cílové tabulce.
Informace o správě datových připojení najdete v tématu Event Hub, IoT Hub a Event Grid.
Vlastní ingestování dat Vlastní příjem dat vyžaduje, abyste napsali aplikaci, která používá některou z klientských knihoven Azure Data Exploreru.
Informace v tomto článku slouží ke konfiguraci přizpůsobeného příjmu dat. Můžete také najít užitečnou ukázkovou aplikaci pro streamování příjmu dat na C?view=azure-data-explorer&preserve-view=true#.

Následující tabulka vám pomůže zvolit typ příjmu dat, který je vhodný pro vaše prostředí:

Kritérium Datové připojení Vlastní příjem dat
Zpoždění dat mezi zahájením příjmu dat a daty dostupnými pro dotaz Delší zpoždění Kratší zpoždění
Režijní náklady na vývoj Rychlé a snadné nastavení bez režijních nákladů na vývoj Vysoká režie při vývoji aplikace pro přijímání dat, zpracování chyb a zajištění konzistence dat.

Poznámka:

Proces můžete spravovat, abyste v clusteru povolili a zakázali příjem dat streamování pomocí webu Azure Portal nebo programově v jazyce C#. Pokud používáte jazyk C# pro vlastní aplikaci, může být vhodnější použít programový přístup.

Požadavky

Důležité informace o výkonu a provozu

Hlavní faktory, které mohou ovlivnit zpracování streamovaných dat, jsou:

  • Velikost virtuálního počítače a clusteru: Výkon streamovaného příjmu dat a kapacita se škáluje se zvětšujícími se velikostmi virtuálních počítačů a clusterů. Počet souběžných žádostí o příjem dat je omezený na šest na jádro. Například u 16 jader SKU, například D14 a L16, je maximální podporovaná zátěž 96 souběžných požadavků na příjem dat. U dvou základních skladových položek, jako je D11, je maximální podporovaná zátěž 12 souběžných požadavků na příjem dat.
  • Omezení velikosti dat: Limit velikosti dat pro požadavek na příjem dat je 4 MB. To zahrnuje všechna data vytvořená pro zásady aktualizace během příjmu dat.
  • Aktualizace schématu: Aktualizace schématu, jako je vytváření a úpravy tabulek a mapování ingestace, můžou trvat až pět minut pro službu pro streamingovou ingestaci. Další informace najdete v tématu Streamování příjmu dat a změny schématu.
  • Kapacita SSD: Povolení streamovacího příjmu dat v clusteru, i když data nejsou přijímána prostřednictvím streamování, využívá část místního disku SSD počítačů clusteru pro data ze streamovacího příjmu a snižuje dostupné úložiště pro aktivní mezipaměť.
  • Kurzory databáze: Při streamovacím příjmu dat se může aktualizace kurzoru databáze opožďovat až o 60 sekund za dostupností dat. Toto zpoždění vzniká z asynchronních procesů uzavírání na pozadí, které převádějí data z vyrovnávací paměti streamování na trvalé úseky úložiště ve sloupcích, během nichž se aktualizuje kurzor (používaný pro přírůstkové zpracování, průběžné exporty nebo materializovaná zobrazení). Pokud vaše úloha vyžaduje okamžitou konzistenci kurzoru pro sémantiku "pouze jednou," zvažte místo toho použití příjmu pomocí front nebo zohledněte tuto potenciální prodlevu ve vaší aplikační logice.

Povolení příjmu streamovaných dat v clusteru

Než budete moci používat příjem dat streamování, musíte povolit funkci v clusteru a definovat zásady příjmu streamování. Funkci můžete povolit při vytváření clusteru nebo ji přidat do existujícího clusteru.

Varování

Před povolením příjmu streamovaných dat zkontrolujte omezení .

Povolit streamovací příjem při vytváření nového clusteru

Příjem dat streamování můžete povolit při vytváření nového clusteru pomocí webu Azure Portal nebo programově v jazyce C#.

Při vytváření clusteru podle kroků v Vytvoření clusteru a databáze Azure Data Exploreru, na kartě Konfigurace vyberte Streamovací příjem >zapnuto.

Vytvářením clusteru v Azure Data Exploreru povolte streamovací ingest.

Povolení příjmu streamovaných dat v existujícím clusteru

Pokud máte existující cluster, můžete ingestování streamování povolit pomocí webu Azure Portal nebo programově v jazyce C#.

  1. Na webu Azure Portal přejděte do clusteru Azure Data Exploreru.

  2. V Nastavení vyberte Konfigurace.

  3. V podokně Konfigurace vyberte Zapnuto a povolte streamovací příjem.

  4. Zvolte Uložit.

    Zapněte streamovací příjem v Azure Data Exploreru.

Vytvoření cílové tabulky a definování zásad

Vytvořte tabulku pro příjem streamovaných dat a definujte související zásady použitím Azure portálu nebo programováním v C#.

  1. Na webu Azure Portal přejděte do svého clusteru.

  2. Vyberte Dotaz.

    V portálu Azure Data Explorer vyberte dotaz pro povolení streamingového ingestování.

  3. Pokud chcete vytvořit tabulku, která bude přijímat data prostřednictvím příjmu streamovaných dat, zkopírujte do podokna Dotaz následující příkaz a vyberte Spustit.

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

    Vytvořte tabulku pro streamovací ingestaci do Azure Data Exploreru.

  4. Zkopírujte jeden z následujících příkazů do podokna Dotaz a vyberte Spustit. Tím se definují zásady streamovacího příjmu dat na tabulce, kterou jste vytvořili, nebo na databázi, která tuto tabulku obsahuje.

    Návod

    Zásada definovaná na úrovni databáze se vztahuje na všechny existující a budoucí tabulky v databázi. Když zásadu povolíte na úrovni databáze, není nutné ji povolit pro každou tabulku.

    • K definování zásad v tabulce, kterou jste vytvořili, použijte:

      .alter table TestTable policy streamingingestion enable
      
    • K definování zásad databáze obsahující tabulku, kterou jste vytvořili, použijte:

      .alter database StreamingTestDb policy streamingingestion enable
      

    Definujte zásady příjmu dat pro streamování v Azure Data Exploreru.

Vytvořte aplikaci pro streamovací příjem dat do vašeho clusteru.

Vytvořte aplikaci pro příjem dat do clusteru pomocí preferovaného jazyka.

Poznámka:

Informace o příjmu dat ve frontě najdete v pokynech k vytvoření aplikace pro získání dat pomocí příjmu dat ve frontě.

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);
    }
}

Zakázání příjmu streamovaných dat v clusteru

Varování

Zakázání streamovacího příjmu může trvat několik hodin.

Před zakázáním příjmu dat streamování v clusteru Azure Data Exploreru zakažte zásady příjmu streamování ze všech relevantních tabulek a databází. Při odebrání zásad streamování příjmu dat se v clusteru Azure Data Explorer mění uspořádání dat. Streamovaná data se přesouvají z počátečního úložiště do trvalého úložiště ve sloupcovém úložišti (rozsahy nebo oddíly). V závislosti na množství dat v počátečním úložišti může tento proces trvat několik sekund až několik hodin.

Zrušení zásad pro streamovací příjem

Zásady příjmu streamování můžete odstranit pomocí webu Azure Portal nebo programově v jazyce C#.

  1. Na webu Azure Portal přejděte do clusteru Azure Data Exploreru a vyberte Dotaz.

  2. Pokud chcete z tabulky odstranit zásady příjmu streamovaných dat, zkopírujte do podokna Dotaz následující příkaz a vyberte Spustit.

    .delete table TestTable policy streamingingestion
    

    Odstraňte zásady streamovaného příjmu v Azure Data Exploreru.

  3. V Nastavení vyberte Konfigurace.

  4. V podokně Konfigurace vyberte Vypnuto a zakažte streamovací ingest.

  5. Zvolte Uložit.

    Vypněte streamovací přijímání v Azure Data Exploreru.

Omezení

  • Mapování dat musí být předem vytvořené pro použití při streamovaném příjmu dat. Jednotlivé požadavky na příjem datového streamování nepodporují mapování dat inline.
  • U streamovaných dat příjmu dat není možné nastavit značky rozsahu.
  • Aktualizace zásad
    • Zásady aktualizace můžou odkazovat pouze na nově přijatá data ve zdrojové tabulce, a ne na žádná jiná data ani tabulky v databázi.
    • Modul plug-in Pythonu se nepodporuje.
    • Když se zásada aktualizace s transakčními zásadami nezdaří, opakování se vrátí do dávkového příjmu dat.
    • U kaskádových zásad aktualizací , které zahrnují join operátora, je nutné zakázat příjem streamů u všech nadřazených tabulek. Zvažte například kaskádové zásady aktualizace, kde tabulka1 aktualizuje tabulku 2, tabulka2 aktualizuje tabulku 3 a tabulku 3 aktualizuje tabulku 4. Pokud zásady aktualizace tabulky Table4 zahrnují spojení, musíte zakázat streamové ingestování u tabulek Table1, Table2 a Table3.
  • Pokud je v clusteru, který slouží jako vedoucí pro sledující databáze, povolený streamovací příjem, musí být streamovací příjem povolený také na následujících clusterech, aby mohly sledovat data streamovaného příjmu. Totéž platí pro případ, kdy jsou data clusteru sdílena prostřednictvím Data Share.