Bagikan melalui


Koneksi data Azure Event Hubs

Azure Event Hubs adalah platform streaming data besar dan layanan penyerapan peristiwa. Azure Data Explorer menawarkan penyerapan berkelanjutan dari Azure Event Hubs yang dikelola pelanggan.

Alur penyerapan Azure Event Hubs mentransfer peristiwa ke Azure Data Explorer dalam beberapa langkah. Pertama, Anda membuat pusat aktivitas di portal Azure. Kemudian buat tabel target di Azure Data Explorer tempat data dalam format tertentu, diserap menggunakan properti penyerapan yang disediakan. Koneksi Azure Event Hubs perlu mengetahui perutean peristiwa. Data dapat disematkan dengan properti yang dipilih sesuai dengan properti sistem peristiwa. Buat koneksi ke Azure Event Hubs untuk membuat pusat aktivitas dan mengirim peristiwa. Proses ini dapat dikelola melalui portal Microsoft Azure, secara terprogram dengan C# atau Python, atau dengan templat Azure Resource Manager.

Untuk informasi umum tentang penyerapan data di Azure Data Explorer, lihat Gambaran umum penyerapan data Azure Data Explorer.

Opsi autentikasi koneksi data Azure Data Explorer

  • Koneksi data berbasis Identitas Terkelola (disarankan): Menggunakan koneksi data berbasis identitas terkelola adalah cara paling aman untuk menyambungkan ke sumber data. Ini memberikan kontrol penuh atas kemampuan untuk mengambil data dari sumber data. Penyiapan koneksi data menggunakan identitas terkelola memerlukan langkah-langkah berikut:

    1. Tambahkan identitas terkelola ke kluster Anda.
    2. Berikan izin ke identitas terkelola pada sumber data. Untuk mengambil data dari Azure Event Hubs, identitas terkelola harus memiliki izin Penerima Data Azure Event Hubs.
    3. Tetapkan kebijakan identitas terkelola pada database target.
    4. Buat koneksi data menggunakan autentikasi identitas terkelola untuk mengambil data.

    Perhatian

    Jika izin identitas terkelola dihapus dari sumber data, koneksi data tidak akan berfungsi lagi dan tidak akan dapat mengambil data dari sumber data.

  • Koneksi data berbasis kunci: Jika autentikasi identitas terkelola tidak ditentukan untuk koneksi data, koneksi secara otomatis default ke autentikasi berbasis kunci. Koneksi berbasis kunci mengambil data menggunakan string koneksi sumber daya, seperti azure Event Hubs string koneksi. Azure Data Explorer mendapatkan string koneksi sumber daya yang ditentukan dan menyimpannya dengan aman. String koneksi kemudian digunakan untuk mengambil data dari sumber data.

    Perhatian

    Jika kunci diputar, koneksi data tidak akan berfungsi lagi dan tidak akan dapat mengambil data dari sumber data. Untuk memperbaiki masalah, perbarui atau buat ulang koneksi data.

Format data

Catatan

  • Penyerapan dari Azure Event Hubs tidak mendukung format RAW.
  • Azure Event Hubs Schema Registry dan Avro tanpa skema tidak didukung.
  • Data dapat dipadatkan menggunakan algoritma pemadatan gzip. Anda dapat menentukan Compression secara dinamis menggunakan properti penyerapan, atau di pengaturan Koneksi Data statis.
  • Kompresi data tidak didukung untuk format biner (Avro, ApacheAvro, Parquet, ORC, dan W3CLOGFILE).
  • Pengodean kustom dan properti sistem yang disematkan tidak didukung dengan format biner dan data terkompresi.
  • Saat menggunakan format biner (Avro, ApacheAvro, Parquet, ORC, dan W3CLOGFILE) dan pemetaan penyerapan, urutan bidang dalam definisi pemetaan penyerapan harus cocok dengan urutan kolom yang sesuai dalam tabel.

Properti Azure Event Hubs

Azure Data Explorer mendukung properti Azure Event Hubs berikut ini:

  • Sekumpulan properti penyerapan tertutup, yang membantu merutekan peristiwa ke tabel yang relevan.
  • Sekumpulan properti sistem peristiwa tertutup, yang dapat disematkan dalam data berdasarkan pemetaan tertentu.

Catatan

Menyerap properti kustom Azure Event Hubs, yang digunakan untuk mengaitkan metadata dengan peristiwa, tidak didukung. Jika Anda perlu menyerap properti kustom, kirim properti tersebut ke dalam isi data peristiwa. Untuk informasi selengkapnya, lihat Menyerap properti kustom.

Properti penyerapan

Sifat penyerapan menginstruksikan proses konsumsi, di mana untuk rute data, dan bagaimana memprosesnya. Anda dapat menentukan properti penyerapan dari penyerapan peristiwa menggunakan EventData.Properties. Anda dapat mengatur properti berikut:

Catatan

Nama properti peka huruf besar/kecil.

Properti Deskripsi
Database Nama peka huruf besar/kecil dari database target. Secara default, data diserap ke dalam database target yang terkait dengan koneksi data. Gunakan properti ini untuk mengambil alih database default dan mengirim data ke database lain. Untuk melakukannya, Anda harus terlebih dahulu menyiapkan koneksi sebagai koneksi multi-database.
Tabel Nama peka huruf besar/kecil dari tabel target yang ada. Mengambil alih Table yang diatur pada panel Data Connection.
Format Format data. Mengambil alih Data format yang diatur pada panel Data Connection.
IngestionMappingReference Nama pemetaan penyerapan yang ada yang akan digunakan. Mengambil alih Column mapping yang diatur pada panel Data Connection.
Kompresi Pemadatan data, None (default), atau gzip.
Pengodean Pengodean data, defaultnya adalah UTF8. Dapat berupa .NET pengodean yang didukung .
Tag Daftar tag untuk dikaitkan dengan data yang terserap, diformat sebagai string array JSON Ada implikasi performa saat menggunakan tag.
RawHeaders Menunjukkan bahwa sumber peristiwa adalah Kafka dan Azure Data Explorer harus menggunakan deserialisasi array byte untuk membaca properti perutean lainnya. Nilai diabaikan.

Catatan

Hanya peristiwa yang diantrekan setelah Anda membuat koneksi data yang diserap, kecuali tanggal mulai pengambilan kustom disediakan. Bagaimanapun, periode lookback tidak dapat melebihi periode retensi Event Hub yang sebenarnya.

Perutean aktivitas

Saat membuat koneksi data ke kluster, Anda dapat menentukan perutean tempat mengirim data yang diserap. Perutean default adalah ke tabel target yang ditentukan dalam string koneksi yang terkait dengan database target. Perutean default untuk data Anda juga disebut sebagai perutean statis. Anda dapat menentukan opsi perutean dan pemrosesan alternatif untuk data Anda dengan mengatur satu atau beberapa properti data peristiwa yang disebutkan dalam paragraf sebelumnya.

Catatan

Koneksi data Azure Event Hubs akan mencoba memproses semua peristiwa yang dibacanya dari Pusat Aktivitas, dan setiap peristiwa yang tidak dapat diproses karena alasan apa pun akan dilaporkan sebagai kegagalan penyerapan. Baca tentang cara memantau penyerapan Azure Data Explorer di sini.

Merutekan data peristiwa ke database alternatif

Merutekan data ke database alternatif nonaktif secara default. Untuk mengirim data ke database lain, Anda harus terlebih dahulu mengatur koneksi sebagai koneksi multi-database. Fitur ini dapat diaktifkan di portal Azure portal Azure, dengan SDK manajemen C# atau Python, atau dengan templat ARM. Pengguna, grup, perwakilan layanan, atau identitas terkelola yang digunakan untuk mengizinkan perutean database setidaknya harus memiliki peran kontributor dan izin tulis pada kluster.

Untuk menentukan database alternatif, atur properti Penyerapan database.

Peringatan

Menentukan database alternatif tanpa mengatur koneksi sebagai koneksi data multi-database akan menyebabkan penyerapan gagal.

Merutekan data peristiwa ke tabel alternatif

Untuk menentukan tabel alternatif untuk setiap peristiwa, atur properti Tabel, Format, Pemadatan, dan pemetaan penyerapan. Koneksi secara dinamis merutekan data yang diserap seperti yang ditentukan dalam EventData.Properties, mengganti properti statis untuk peristiwa ini.

Contoh berikut menunjukkan kepada Anda cara mengatur detail hub peristiwa dan mengirim data metrik cuaca ke database alternatif (MetricsDB) dan tabel (WeatherMetrics). Data dalam format JSON dan pemetaan1 telah ditentukan sebelumnya pada tabel WeatherMetrics.

// This sample uses Azure.Messaging.EventHubs which is a .Net Framework library.
await using var producerClient = new EventHubProducerClient("<eventHubConnectionString>");
// Create the event and add optional "dynamic routing" properties
var eventData = new EventData(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(
    new { TimeStamp = DateTime.UtcNow, MetricName = "Temperature", Value = 32 }
)));
eventData.Properties.Add("Database", "MetricsDB");
eventData.Properties.Add("Table", "WeatherMetrics");
eventData.Properties.Add("Format", "json");
eventData.Properties.Add("IngestionMappingReference", "mapping1");
eventData.Properties.Add("Tags", "['myDataTag']");
var events = new[] { eventData };
// Send events
await producerClient.SendAsync(events);

Pemetaan properti sistem Azure Event Hubs

Properti sistem adalah bidang yang diatur oleh layanan Azure Event Hubs, pada saat peristiwa diantrekan. Koneksi data Azure Event Hubs Azuer Data Explorer dapat menyematkan sekumpulan properti sistem yang telah ditentukan ke dalam data yang diserap ke dalam tabel berdasarkan pemetaan tertentu.

Catatan

  • Menyematkan properti sistem didukung untuk format json dan tabular (yaitu JSON, , , MultiJSONCSV, TSV, PSV, SCsv, SOHsvTSVE).
  • Saat menggunakan format yang tidak didukung (i.e. TXT atau format terkompresi seperti Parquet, Avro dll.) data masih akan diserap, tetapi properti akan diabaikan.
  • Menyematkan properti sistem tidak didukung saat pemadatan pesan Pusat Aktivitas diatur. Dalam skenario seperti itu, kesalahan yang sesuai akan dipancarkan dan data tidak akan diserap.
  • Untuk data bertabel, properti sistem hanya didukung untuk pesan peristiwa rekaman tunggal.
  • Untuk data json, properti sistem juga didukung untuk pesan peristiwa beberapa rekaman. Dalam kasus seperti itu, properti sistem hanya ditambahkan ke rekaman pertama pesan peristiwa.
  • Untuk CSV pemetaan, properti ditambahkan di awal rekaman dalam urutan yang tercantum dalam pembuatan koneksi data. Jangan mengandalkan urutan properti ini, karena dapat berubah di masa mendatang.
  • Untuk pemetaan JSON, properti ditambahkan sesuai dengan nama properti dalam tabel Properti sistem.

Layanan Azure Event Hubs mengekspos properti sistem berikut:

Properti Jenis Data Deskripsi
x-opt-enqueued-time datetime Waktu UTC ketika peristiwa tersebut dimasukkan dalam antrean
x-opt-sequence-number long Jumlah urutan logis peristiwa dalam aliran partisi hub peristiwa
x-opt-offset string Offset peristiwa dari aliran partisi pusat aktivitas. Pengidentifikasi offset unik dalam partisi aliran pusat aktivitas
x-opt-publisher string Nama penerbit, jika pesan dikirim ke titik akhir penerbit
x-opt-partition-key string Kunci partisi dari partisi yang sesuai yang menyimpan acara

Saat Anda bekerja dengan hub peristiwa IoT Central , Anda juga dapat menyematkan properti sistem IoT Hub dalam payload. Untuk daftar lengkapnya, lihat Properti sistem IoT Hub.

Jika Anda memilih Properti sistem peristiwa di bagian tabel Sumber Data, Anda harus menyertakan properti dalam skema tabel dan pemetaan.

Contoh pemetaan skema

Contoh pemetaan skema tabel

Jika data Anda mennyertakan tiga kolom (TimeStamp, MetricName, dan Value) dan properti yang Anda sertakan adalah x-opt-enqueued-time dan x-opt-offset, buat atau ubah skema tabel dengan menggunakan perintah ini:

    .create-merge table TestTable (TimeStamp: datetime, MetricName: string, Value: int, EventHubEnqueuedTime:datetime, EventHubOffset:string)

Contoh pemetaan CSV

Jalankan perintah berikut untuk menambahkan data ke awal catatan. Catat nilai ordinal.

    .create table TestTable ingestion csv mapping "CsvMapping1"
    '['
    '   { "column" : "TimeStamp", "Properties":{"Ordinal":"2"}},'
    '   { "column" : "MetricName", "Properties":{"Ordinal":"3"}},'
    '   { "column" : "Value", "Properties":{"Ordinal":"4"}},'
    '   { "column" : "EventHubEnqueuedTime", "Properties":{"Ordinal":"0"}},'
    '   { "column" : "EventHubOffset", "Properties":{"Ordinal":"1"}}'
    ']'

Contoh pemetaan JSON

Data ditambahkan dengan menggunakan pemetaan properti sistem. Jalankan perintah ini:

    .create table TestTable ingestion json mapping "JsonMapping1"
    '['
    '    { "column" : "TimeStamp", "Properties":{"Path":"$.TimeStamp"}},'
    '    { "column" : "MetricName", "Properties":{"Path":"$.MetricName"}},'
    '    { "column" : "Value", "Properties":{"Path":"$.Value"}},'
    '    { "column" : "EventHubEnqueuedTime", "Properties":{"Path":"$.x-opt-enqueued-time"}},'
    '    { "column" : "EventHubOffset", "Properties":{"Path":"$.x-opt-offset"}}'
    ']'

Pemetaan skema untuk file Azure Event Hubs Capture Avro

Salah satu cara untuk menggunakan data Azure Event Hubs adalah dengan mengambil peristiwa melalui Azure Event Hubs di Azure Blob Storage atau Azure Data Lake Storage. Anda kemudian dapat menyerap file pengambilan saat ditulis menggunakan Koneksi Data Event Grid di Azure Data Explorer.

Skema file pengambilan berbeda dari skema peristiwa asli yang dikirim ke Azure Event Hubs. Anda harus merancang skema tabel tujuan dengan mengingat perbedaan ini. Secara khusus, payload peristiwa diwakili dalam file pengambilan sebagai array byte, dan array ini tidak secara otomatis didekodekan oleh koneksi data Azure Data Explorer Event Grid. Untuk informasi selengkapnya tentang skema file untuk data pengambilan Azure Event Hubs Avro, lihat Menjelajahi file Avro yang diambil di Azure Event Hubs.

Untuk mendekode payload peristiwa dengan benar:

  1. Petakan Body bidang peristiwa yang diambil ke kolom jenis dynamic dalam tabel tujuan.
  2. Terapkan kebijakan pembaruan yang mengonversi array byte menjadi string yang dapat dibaca menggunakan fungsi unicode_codepoints_to_string().

Menyerap properti kustom

Saat menyerap peristiwa dari Azure Event Hubs, data diambil dari bagian body objek data peristiwa. Namun, properti kustom Azure Event Hubs didefinisikan di properties bagian objek dan tidak diserap. Untuk menyerap properti pelanggan, Anda harus menyematkannya ke dalam data di body bagian objek.

Contoh berikut membandingkan objek data peristiwa yang berisi properti customProperty kustom seperti yang didefinisikan oleh Azure Event Hubs (kiri) dengan properti yang disematkan yang diperlukan untuk penyerapan (kanan).

{
"body":{
"value": 42
},
"properties":{
"customProperty": "123456789"
}
}
{
"body":{
"value": 42,
"customProperty": "123456789"
}
}

Anda dapat menggunakan salah satu metode berikut untuk menyematkan properti kustom ke dalam data di body bagian objek data peristiwa:

  • Di Azure Event Hubs, saat membuat objek data peristiwa, sematkan properti kustom sebagai bagian dari data di bagian body objek.
  • Gunakan Azure Stream Analytics untuk memproses peristiwa dari pusat aktivitas dan menyematkan properti kustom dalam data peristiwa. Dari Azure Stream Analytics, Anda dapat menyerap data secara asli menggunakan konektor output Azure Data Explorer, atau merutekan data ke hub peristiwa lain dan dari sana ke kluster Anda.
  • Gunakan Azure Functions untuk menambahkan properti kustom lalu menyerap data.

Koneksi data Azure Event Hubs lintas wilayah

Untuk performa terbaik, buat semua sumber daya berikut di wilayah yang sama dengan kluster. Jika tidak ada alternatif lain, pertimbangkan untuk menggunakan tingkat Premium atau Dedicated Event Hubs. Perbandingan tingkat Azure Event Hubs dapat ditemukan di sini.

Membuat pusat aktivitas

Jika Anda belum memilikinya, Buat pusat aktivitas. Menyambungkan ke pusat aktivitas dapat dikelola melalui portal Azure, secara terprogram dengan C# atau Python, atau dengan templat Azure Resource Manager.

Catatan

  • Kemampuan untuk menambahkan partisi secara dinamis setelah membuat pusat aktivitas hanya tersedia dengan tingkat Event Hubs Premium dan Dedicated. Pertimbangkan skala jangka panjang saat mengatur jumlah partisi.
  • Grup konsumen harus unik per konsumen. Buat grup konsumen yang didedikasikan untuk koneksi Azure Data Explorer.

Mengirim aktivitas

Lihat aplikasi sampel yang menghasilkan data dan mengirimkannya ke pusat aktivitas.

Menyiapkan solusi pemulihan bencana geografis

Pusat aktivitas menawarkan solusi pemulihan bencana geografis. Azure Data Explorer tidak mendukung Alias namespace layanan pusat aktivitas. Untuk menerapkan pemulihan bencana geografis dalam solusi Anda, buat dua koneksi data pusat aktivitas: satu untuk namespace utama dan satu untuk namespace sekunder. Azure Data Explorer mendengarkan kedua koneksi pusat aktivitas.

Catatan

Pengguna bertanggung jawab untuk menerapkan failover dari namespace layanan utama ke namespace layanan sekunder.