Azure Event Hubs veri bağlantısı

Azure Event Hubs, büyük veri akışı platformu ve olay alımı hizmetidir. Azure Veri Gezgini, müşteri tarafından yönetilen Event Hubs'tan sürekli alım sağlar.

Event Hubs alım işlem hattı, olayları birkaç adımda Azure Veri Gezgini'a aktarır. İlk olarak Azure portal bir olay hub'ı oluşturursunuz. Ardından Azure Veri Gezgini belirli bir biçimdeki verilerin verilen alım özellikleri kullanılarak alınacağı bir hedef tablo oluşturursunuz. Event Hubs bağlantısının olay yönlendirmeyi bilmesi gerekir. Veriler , olay sistemi özelliklerine göre seçili özelliklerle katıştırılabilir. Olay hub'ı oluşturmak ve olayları göndermek için Event Hubs'a bağlantı oluşturun. Bu işlem Azure portal aracılığıyla, C# veya Python ile program aracılığıyla veya Azure Resource Manager şablonuyla yönetilebilir.

Azure Veri Gezgini'da veri alımı hakkında genel bilgi için bkz. Azure Veri Gezgini veri alımına genel bakış.

Azure Veri Gezgini veri bağlantısı kimlik doğrulama mekanizmaları

Dikkat

Yönetilen kimlik izinleri veri kaynağından kaldırılırsa, veri bağlantısı devre dışı bırakılır ve veri kaynağından veri getiremez.

  • Anahtar tabanlı veri bağlantısı: Veri bağlantısında yönetilen kimlik belirtilmezse, bağlantı otomatik olarak anahtar tabanlı kimlik doğrulamasına ayarlanır. Anahtar tabanlı bağlantılar, Azure Event Hubs bağlantı dizesi gibi bir kaynak bağlantı dizesi kullanarak verileri getirir. Azure Veri Gezgini, belirtilen kaynak için kaynak bağlantı dizesi oluşturur ve veri bağlantısına güvenli bir şekilde kaydeder. Bağlantı dizesi daha sonra veri kaynağından veri getirmek için kullanılır.

Dikkat

Anahtar döndürülürse, veri bağlantısı devre dışı bırakılır ve veri kaynağından veri getiremez. Sorunu çözmek için veri bağlantısını güncelleştirin veya yeniden oluşturun.

Veri biçimi

  • Veriler olay hub'ından EventData nesneleri biçiminde okunur.

  • Desteklenen biçimlere bakın.

    Not

  • Veriler sıkıştırma algoritması kullanılarak GZip sıkıştırılabilir. Alma özelliklerini kullanarak veya statik Veri Bağlantısı ayarlarında dinamik olarak belirtebilirsinizCompression.

    Not

    Sıkıştırılmış biçimler (Avro, Parquet, ORC, ApacheAvro ve W3CLOGFILE) için veri sıkıştırma desteklenmez. Özel kodlama ve eklenmiş sistem özellikleri sıkıştırılmış verilerde desteklenmez.

Event Hubs özellikleri

Azure Veri Gezgini aşağıdaki Event Hubs özelliklerini destekler:

Not

Meta verileri olaylarla ilişkilendirmek için kullanılan Event Hubs özel özelliklerinin alımı desteklenmez. Özel özellikleri almanız gerekiyorsa, bunları olay verilerinin gövdesine gönderin. Daha fazla bilgi için bkz. Özel özellikleri alma.

Alma özellikleri

Veri alımı özellikleri, veri alımı işlemini, verilerin nereye yönlendirileceği ve nasıl işlendiğini açıklar. EventData.Properties kullanarak olay alımının alım özelliklerini belirtebilirsiniz. Aşağıdaki özellikleri ayarlayabilirsiniz:

Not

Özellik adları büyük/küçük harfe duyarlıdır.

Özellik Açıklama
Veritabanı Hedef veritabanının büyük/küçük harfe duyarlı adı. Varsayılan olarak, veriler veri bağlantısıyla ilişkili hedef veritabanına aktarılır. Varsayılan veritabanını geçersiz kılmak ve verileri farklı bir veritabanına göndermek için bu özelliği kullanın. Bunu yapmak için önce bağlantıyı çok veritabanılı bir bağlantı olarak ayarlamanız gerekir.
Tablo Mevcut hedef tablonun büyük/küçük harfe duyarlı adı. Bölmedeki kümeyi TableData Connection geçersiz kılar.
Biçimlendir Veri biçimi. Bölmedeki kümeyi Data formatData Connection geçersiz kılar.
IngestionMappingReference Kullanılacak mevcut alım eşlemesinin adı. Bölmedeki kümeyi Column mappingData Connection geçersiz kılar.
Sıkıştırma Veri sıkıştırma, None (varsayılan) veya GZip sıkıştırma.
Encoding Veri kodlama, varsayılan utf8'dir. Desteklenen .NET kodlamalarından herhangi biri olabilir.
Etiketler JSON dizi dizesi olarak biçimlendirilmiş, alınan verilerle ilişkilendirilecek etiketlerin listesi. Etiketleri kullanırken performansın etkileri vardır.
RawHeaders Olay kaynağının Kafka olduğunu ve Azure Veri Gezgini diğer yönlendirme özelliklerini okumak için bayt dizisi seri durumdan çıkarma kullanması gerektiğini gösterir. Değer yoksayılır.

Not

Yalnızca veri bağlantısını oluşturduktan sonra sıralanan olaylar alınıyor.

Olay yönlendirme

Kümenize bir veri bağlantısı oluşturduğunuzda, alınan verilerin nereye gönderileceğine ilişkin yönlendirmeyi belirtebilirsiniz. Varsayılan yönlendirme, hedef veritabanıyla ilişkili bağlantı dizesi belirtilen hedef tabloya yapılır. Verilerinizin varsayılan yönlendirmesi statik yönlendirme olarak da adlandırılır. Yukarıda belirtilen olay verileri özelliklerini ayarlayarak verileriniz için alternatif bir yönlendirme belirtebilirsiniz.

Olay verilerini alternatif veritabanına yönlendirme

Verileri alternatif bir veritabanına yönlendirme varsayılan olarak kapalıdır. Verileri farklı bir veritabanına göndermek için önce bağlantıyı çok veritabanılı bir bağlantı olarak ayarlamanız gerekir. Bunu Azure portal Azure portal, C#, Python veya ARM şablonunda yapabilirsiniz. Veritabanı yönlendirmeye izin vermek için kullanılan kullanıcı, grup, hizmet sorumlusu veya yönetilen kimlik en azından kümede katkıda bulunan rolüne ve yazma izinlerine sahip olmalıdır.

Alternatif bir veritabanı belirtmek için Veritabanıalımı özelliğini ayarlayın.

Uyarı

Bağlantıyı çok veritabanılı veri bağlantısı olarak ayarlamadan alternatif bir veritabanı belirtmek, alımın başarısız olmasına neden olur.

Olay verilerini alternatif bir tabloya yönlendirme

Her olay için alternatif bir tablo belirtmek için Tablo, Biçim, Sıkıştırma ve eşleme alımı özelliklerini ayarlayın. Bağlantı, alınan verileri EventData.Properties içinde belirtilen şekilde dinamik olarak yönlendirir ve bu olayın statik özelliklerini geçersiz kılır.

Aşağıdaki örnek, olay hub'ı ayrıntılarını ayarlamayı ve hava durumu ölçüm verilerini alternatif veritabanına (MetricsDB) ve tabloya (WeatherMetrics) göndermeyi gösterir. Veriler JSON biçimindedir ve mapping1, WeatherMetrics tablosunda önceden tanımlanmıştır.

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

Olay sistemi özellikleri eşlemesi

Sistem özellikleri, olay sıralandığı sırada Event Hubs hizmeti tarafından ayarlanan özellikleri depolar. Olay hub'ına yönelik veri bağlantısı, belirli bir eşlemeyi temel alan bir tabloya alınan verilere seçili bir sistem özellikleri kümesini ekleyebilir.

Not

  • Ekleme sistemi özellikleri json ve tablosal biçimler (örneğin JSON, , MultiJSON, CSV, , TSV, PSV, SCsv, , SOHsv, ) TSVEiçin desteklenir.
  • Desteklenmeyen bir biçim (i.e. TXT veya gibi ParquetAvro sıkıştırılmış biçimler) kullanıldığında veriler yine alınır, ancak özellikler yoksayılır.
  • Olay Hub'ı iletilerinin sıkıştırması ayarlandığında sistem özelliklerinin katıştırılması desteklenmez. Bu tür senaryolarda uygun bir hata gönderilir ve veriler alınmaz.
  • Tablosal veriler için sistem özellikleri yalnızca tek kayıtlı olay iletileri için desteklenir.
  • JSON verileri için sistem özellikleri, birden çok kayıtlı olay iletileri için de desteklenir. Böyle durumlarda sistem özellikleri yalnızca olay iletisinin ilk kaydına eklenir.
  • Eşleme için CSV , özellikler kaydın başına veri bağlantısının oluşturulmasında listelenen sırayla eklenir. Gelecekte değişebileceği için bu özelliklerin sırasına güvenmeyin.
  • Eşleme için JSON , özellikler Sistem özellikleri tablosundaki özellik adlarına göre eklenir.

Event Hubs hizmeti aşağıdaki sistem özelliklerini kullanıma sunar:

Özellik Veri Türü Açıklama
x-opt-enqueued-time datetime Olayın sıraya alındığı UTC saati
x-opt-sequence-number long Olay hub'ının bölüm akışı içindeki olayın mantıksal sıra numarası
x-opt-offset string Olayın olay hub'ı bölüm akışından uzaklığı. Uzaklık tanımlayıcısı, olay hub'ı akışının bir bölümünde benzersizdir
x-opt-publisher string İleti bir yayımcı uç noktasına gönderildiyse yayımcı adı
x-opt-partition-key string Olayı depolayan ilgili bölümün bölüm anahtarı

IoT Central olay hub'larıyla çalışırken yüke IoT Hub sistem özelliklerini de ekleyebilirsiniz. Listenin tamamı için bkz. sistem özelliklerini IoT Hub.

Tablonun Veri Kaynağı bölümünde Olay sistemi özelliklerini seçtiyseniz, özellikleri tablo şemasına ve eşlemesine eklemeniz gerekir.

Şema eşleme örnekleri

Tablo şeması eşleme örneği

Verileriniz üç sütun (Timespan, Metricve Value) içeriyorsa ve eklediğiniz özellikler ve x-opt-offsetisex-opt-enqueued-time, şu komutu kullanarak tablo şemasını oluşturun veya değiştirin:

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

CSV eşleme örneği

Kaydın başına veri eklemek için aşağıdaki komutları çalıştırın. Sıralı değerleri not edin.

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

JSON eşleme örneği

Veriler, sistem özellikleri eşlemesi kullanılarak eklenir. Şu komutları çalıştırın:

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

Olay Hub'ı Yakalama Avro dosyaları için şema eşleme

Olay Hub'ı verilerini kullanmanın bir yolu, Azure Blob Depolama veya Azure Data Lake Storage Azure Event Hubs üzerinden olayları yakalamaktır. Daha sonra yakalama dosyalarını, Azure Veri Gezgini bir Event Grid Veri Bağlantısı kullanılarak yazıldıkları gibi alabilirsiniz.

Yakalama dosyalarının şeması, Event Hub'a gönderilen özgün olayın şemasından farklıdır. Hedef tablo şemasını bu farkı göz önünde bulundurarak tasarlamanız gerekir. Özellikle, olay yükü yakalama dosyasında bayt dizisi olarak temsil edilir ve bu dizinin kodu Event Grid Azure Veri Gezgini veri bağlantısı tarafından otomatik olarak çözülmez. Event Hub Avro yakalama verilerinin dosya şeması hakkında daha ayrıntılı bilgi için bkz. Azure Event Hubs'de yakalanan Avro dosyalarını keşfetme.

Olay yükünün kodunu doğru şekilde çözmek için:

  1. Body Yakalanan olayın alanını hedef tablodaki türdeki dynamic bir sütunla eşleyin.
  2. unicode_codepoints_to_string() işlevini kullanarak bayt dizisini okunabilir bir dizeye dönüştüren bir güncelleştirme ilkesi uygulayın.

Özel özellikleri alma

Event Hubs'tan olaylar alınırken, veriler olay veri nesnesinin bölümünden alınır body . Ancak Event Hubs özel özellikleri nesnenin properties bölümünde tanımlanır ve alınmaz. Müşteri özelliklerini almak için bunları nesnenin bölümündeki verilere body eklemelisiniz.

Aşağıdaki örnek, Event Hubs (sol) tarafından tanımlanan özel özelliği customProperty içeren olay veri nesnesini alma için gereken katıştırılmış özellik (sağ) ile karşılaştırır.

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

Olay veri nesnesinin bölümündeki verilere body özel özellikler eklemek için aşağıdaki yöntemlerden birini kullanabilirsiniz:

Bölgeler arası Olay Hub'ı veri bağlantısı

En iyi performans için kümeyle aynı bölgede aşağıdaki tüm kaynakları oluşturun. Başka alternatif yoksa Premium veya Ayrılmış Olay Hub'ı katmanlarını kullanmayı göz önünde bulundurun. Olay Hub'ı katmanları karşılaştırması burada bulunabilir.

Olay hub’ı oluşturma

Henüz bir olay hub'ına sahip değilseniz Olay hub'ı oluşturun. Olay hub'ına bağlanma Azure portal aracılığıyla, C# veya Python ile program aracılığıyla veya Azure Resource Manager şablonuyla yönetilebilir.

Not

  • Olay hub'ı oluşturduktan sonra dinamik olarak bölüm ekleme özelliği yalnızca Event Hubs Premium ve Ayrılmış katmanlarla kullanılabilir. Bölüm sayısını ayarlarken uzun vadeli ölçeği göz önünde bulundurun.
  • Tüketici grubu her tüketici için benzersiz olmalıdır . Azure Veri Gezgini bağlantısına ayrılmış bir tüketici grubu oluşturun.

Olayları gönderme

Veri oluşturan ve bir olay hub'ına gönderen örnek uygulamaya bakın.

Örnek veri oluşturma örneği için bkz. Olay hub'ından Azure'a veri alma Veri Gezgini

Coğrafi olağanüstü durum kurtarma çözümünü ayarlama

Olay hub'ı bir Coğrafi olağanüstü durum kurtarma çözümü sunar. Azure Veri Gezgini olay hub'ı ad alanlarını desteklemezAlias. Çözümünüzde Coğrafi olağanüstü durum kurtarmayı uygulamak için, biri birincil ad alanı ve diğeri ikincil ad alanı için olmak üzere iki olay hub'ı veri bağlantısı oluşturun. Azure Veri Gezgini her iki olay hub'ı bağlantısını da dinler.

Not

Birincil ad alanından ikincil ad alanına yük devretme uygulamak kullanıcının sorumluluğundadır.