Mengonfigurasi penyerapan streaming di kluster Azure Data Explorer Anda

Ingesti streaming berguna untuk memuat data ketika Anda membutuhkan latensi rendah antara ingesti dan query. Pertimbangkan untuk menggunakan konsumsi streaming dalam skenario berikut:

  • Latensi kurang dari satu detik diperlukan.
  • Untuk mengoptimalkan pemrosesan operasional banyak tabel di mana aliran data ke setiap tabel relatif kecil (beberapa catatan per detik), tetapi volume konsumsi data keseluruhan tinggi (ribuan catatan per detik).

Jika aliran data ke setiap tabel tinggi (lebih dari 4 GB per jam), pertimbangkan untuk menggunakan penyerapan yang diantrekan.

Untuk mempelajari lebih lanjut tentang metode konsumsi yang berbeda, lihat gambaran umum konsumsi data.

Untuk sampel kode berdasarkan versi SDK sebelumnya, lihat artikel yang diarsipkan.

Pilih jenis konsumsi streaming yang sesuai

Dua jenis konsumsi streaming didukung:

Jenis penyerapan Deskripsi
Koneksi data Koneksi data Azure Event Hubs, IoT Hub, dan Event Grid dapat menggunakan penyerapan streaming, asalkan diaktifkan pada tingkat kluster. Keputusan untuk menggunakan penyerapan streaming dilakukan sesuai dengan kebijakan penyerapan streaming yang dikonfigurasi pada tabel target.
Untuk informasi tentang mengelola koneksi data, lihat Event Hub, IoT Hub, dan Event Grid.
Pemasukan Kustom Penyerapan kustom mengharuskan Anda menulis aplikasi yang menggunakan salah satu pustaka klien Azure Data Explorer.
Gunakan informasi dalam artikel ini untuk mengonfigurasi penyerapan kustom. Anda juga dapat menemukan aplikasi contoh penyerapan streaming C?view=azure-data-explorer&preserve-view=true# bermanfaat.

Gunakan tabel berikut untuk membantu Anda memilih jenis konsumsi yang sesuai untuk lingkungan Anda:

Kriteria Koneksi data Pemasukan Data Kustom
Keterlambatan data antara inisiasi konsumsi dan data yang tersedia untuk kueri Penundaan yang lebih lama Penundaan yang lebih pendek
Biaya overhead pengembangan Pengaturan cepat dan mudah, tidak ada overhead pengembangan Tingginya beban pengembangan untuk membuat aplikasi yang mengambil data, menangani kesalahan, dan memastikan konsistensi data.

Catatan

Anda dapat mengelola proses untuk mengaktifkan dan menonaktifkan penyerapan streaming pada kluster Anda menggunakan portal Azure atau secara terprogram di C#. Jika Anda menggunakan C# untuk aplikasi kustom, Anda mungkin merasa lebih nyaman menggunakan pendekatan terprogram.

Prasyarat

Pertimbangan kinerja dan operasional

Kontributor utama yang dapat mempengaruhi konsumsi streaming adalah:

  • Ukuran VM dan kluster: Performa penyerapan streaming dan kapasitas berkembang dengan peningkatan ukuran VM dan kluster. Jumlah permintaan konsumsi bersamaan dibatasi hingga enam per inti. Misalnya, untuk 16 SKU inti, seperti D14 dan L16, beban maksimal yang didukung adalah 96 permintaan penyerapan bersamaan. Untuk dua SKU inti, seperti D11, beban maksimal yang didukung adalah 12 permintaan penyerapan bersamaan.
  • {4}Batas ukuran{2}data: Batas ukuran data untuk permintaan konsumsi streaming adalah 4 MB. Ini termasuk data apa pun yang dibuat untuk kebijakan pembaruan selama proses ingesti.
  • Pembaruan skema:Pembaruan skema, seperti pembuatan dan modifikasi tabel dan pemetaan konsumsi, dapat memakan waktu hingga lima menit untuk layanan konsumsi streaming. Untuk informasi selengkapnya lihat Konsumsi streaming dan perubahan skema.
  • Kapasitas SSD: Mengaktifkan penyerapan streaming pada kluster, bahkan ketika data tidak diserap melalui streaming, menggunakan bagian dari disk SSD lokal komputer kluster untuk data penyerapan streaming dan mengurangi penyimpanan yang tersedia untuk cache panas.
  • Kursor database: Saat menggunakan penyerapan streaming, pembaruan kursor database mungkin tertinggal hingga 60 detik dari ketersediaan data. Penundaan ini timbul dari proses penyegelan latar belakang asinkron yang mentransisikan data dari buffer streaming ke ekstensi penyimpanan kolom permanen. Selama proses ini, kursor (yang digunakan untuk pemrosesan bertahap, ekspor berkelanjutan, atau tampilan materialisasi) diperbarui. Jika beban kerja Anda memerlukan konsistensi kursor secara segera untuk semantik tepat satu kali, pertimbangkan untuk menggunakan penerimaan berantrean sebagai gantinya atau perhitungkan potensi latensi ini dalam logika aplikasi Anda.

Mengaktifkan penyerapan streaming pada kluster Anda

Sebelum dapat menggunakan penyerapan streaming, Anda harus mengaktifkan kemampuan pada kluster Anda dan menentukan kebijakan penyerapan streaming. Anda dapat mengaktifkan kemampuan saat membuat kluster, atau menambahkannya ke kluster yang ada.

Peringatan

Tinjau batasan sebelum mengaktifkan konsumsi streaming.

Mengaktifkan penyerapan streaming saat membuat kluster baru

Anda dapat mengaktifkan penyerapan streaming saat membuat kluster baru menggunakan portal Azure atau secara terprogram di C#.

Saat membuat kluster menggunakan langkah-langkah dalam Membuat kluster dan database Azure Data Explorer, di tab Konfigurasi, pilih Ingesti streaming>Aktif.

Aktifkan penyerapan streaming saat membuat kluster di Azure Data Explorer.

Mengaktifkan penyerapan streaming pada kluster yang ada

Jika Anda memiliki kluster yang ada, Anda dapat mengaktifkan penyerapan streaming menggunakan portal Azure atau secara terprogram di C#.

  1. Di portal Azure, buka kluster Azure Data Explorer Anda.

  2. Pada Pengaturan, pilih Konfigurasi.

  3. Di panel Konfigurasi, pilih Aktif untuk mengaktifkan ingesti Streaming.

  4. Pilih Simpan.

    Aktifkan penyerapan streaming di Azure Data Explorer.

Membuat tabel target dan menentukan kebijakan

Buat tabel untuk menerima data penyerapan streaming dan tentukan kebijakan terkait menggunakan portal Azure atau secara terprogram di C#.

  1. Di portal Azure, buka kluster Anda.

  2. Pilih Query.

    Pilih kueri di portal Azure Data Explorer untuk mengaktifkan penyerapan streaming.

  3. Untuk membuat tabel yang akan menerima data melalui konsumsi streaming, salin perintah berikut ke panel Kueri dan pilih Jalankan.

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

    Buat tabel untuk penyerapan streaming ke Azure Data Explorer.

  4. Salin salah satu perintah berikut ke panel Kueri dan pilih Jalankan. Ini mendefinisikan kebijakan konsumsi streaming pada tabel yang Anda buat atau pada database yang berisi tabel.

    Petunjuk / Saran

    Kebijakan yang didefinisikan pada tingkat database berlaku untuk semua tabel yang ada dan masa depan dalam database. Saat Anda mengaktifkan kebijakan di tingkat database, anda tidak perlu mengaktifkannya per tabel.

    • Untuk menentukan kebijakan pada tabel yang Anda buat, gunakan:

      .alter table TestTable policy streamingingestion enable
      
    • Untuk menentukan kebijakan pada database yang berisi tabel yang Anda buat, gunakan:

      .alter database StreamingTestDb policy streamingingestion enable
      

    Tentukan kebijakan penyerapan streaming di Azure Data Explorer.

Membuat aplikasi penyerapan streaming untuk menyerap data ke kluster Anda

Buat aplikasi Anda untuk menyerap data ke kluster Anda menggunakan bahasa pilihan Anda.

Catatan

Untuk ingestasi antrean, lihat panduan untuk Membuat aplikasi untuk mendapatkan data menggunakan ingestasi antrean

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

Menonaktifkan penyerapan streaming pada kluster Anda

Peringatan

Menonaktifkan konsumsi streaming mungkin memakan waktu beberapa jam.

Sebelum menonaktifkan penyerapan streaming pada kluster Azure Data Explorer Anda, hilangkan kebijakan penyerapan streaming dari semua tabel dan database yang relevan. Penghapusan kebijakan penyerapan streaming memicu penataan ulang data di dalam kluster Azure Data Explorer Anda. Data pemasukan streaming dipindahkan dari penyimpanan awal ke penyimpanan permanen di penyimpanan kolom (ekstensi atau pecahan). Proses ini dapat memakan waktu antara beberapa detik hingga beberapa jam, tergantung pada jumlah data dalam penyimpanan awal.

Hapus kebijakan penerimaan streaming

Anda dapat menghilangkan kebijakan penyerapan streaming menggunakan portal Azure atau secara terprogram di C#.

  1. Di portal Azure, buka kluster Azure Data Explorer Anda dan pilih Kueri.

  2. Untuk menjatuhkan kebijakan konsumsi streaming dari tabel, salin perintah berikut ke panel Kueri dan pilih Jalankan.

    .delete table TestTable policy streamingingestion
    

    Menghapus kebijakan penyerapan streaming di Azure Data Explorer.

  3. Pada Pengaturan, pilih Konfigurasi.

  4. Di panel Konfigurasi, pilih Mati untuk menonaktifkan Streaming ingestion.

  5. Pilih Simpan.

    Nonaktifkan penyerapan streaming di Azure Data Explorer.

Batasan

  • Pemetaan data harus dibuat sebelumnya untuk digunakan dalam konsumsi streaming. Permintaan konsumsi streaming individual tidak mengakomodasi pemetaan data inline.
  • Tag ekstensi tidak dapat diatur pada data konsumsi streaming.
  • Memperbarui kebijakan
    • Kebijakan pembaruan hanya dapat mereferensikan data yang baru diserap dalam tabel sumber dan bukan data atau tabel lain dalam database
    • Plugin Python tidak didukung
    • Ketika kebijakan pembaruan dengan kebijakan transaksi gagal, percobaan kembali ke penyerapan batch.
    • Untuk kebijakan pembaruan bertingkat yang menyertakan join operator, Anda harus menonaktifkan penyerapan streaming di semua tabel upstream. Misalnya, pertimbangkan kebijakan pembaruan berskala di mana Table1 memperbarui Table2, Table2 memperbarui Table3, dan Table3 memperbarui Table4. Jika kebijakan pembaruan Table4 menyertakan gabungan, Anda harus menonaktifkan penyerapan streaming pada Table1, Table2, dan Table3.
  • Jika penyerapan streaming diaktifkan pada kluster yang digunakan sebagai pemimpin untuk database pengikut, penyerapan streaming harus diaktifkan pada kluster berikut juga untuk mengikuti data penyerapan streaming. Hal yang sama berlaku apakah data kluster dibagikan melalui Data Share.