Azure Stream Analytics giriş bağlantılarıyla ilgili sorunları giderme

Bu makalede, Azure Stream Analytics giriş bağlantılarıyla ilgili yaygın sorunlar, bu sorunların nasıl giderilir ve nasıl düzeltilir açıklanmaktadır. Ele alınan konular arasında hatalı biçimlendirilmiş olayların neden olduğu seri durumdan çıkarma hataları, Event Hubs alıcı sınırları, bölüm sayısı değişiklikleri ve IoT Hub okuyucu sınırlamaları yer alır.

Birçok sorun giderme adımı, Stream Analytics işiniz için kaynak günlüklerini etkinleştirmenizi gerektirir. Kaynak günlükleriniz etkin değilse bkz. Kaynak günlüklerini kullanarak Azure Stream Analytics sorunlarını giderme.

Görev girdi olaylarını almıyor

  1. Girişlere ve çıkışlara bağlantınızı doğrulayın. Her giriş ve çıkış için Bağlantıyı Test Et düğmesini kullanın.

  2. Giriş verilerinizi inceleyin:

    1. Her giriş için Örnek Veri düğmesini kullanın. Giriş örnek verilerini indirin.

    2. Şemayı ve veri türlerini anlamak için örnek verileri inceleyin.

    3. Olayların gönderildiğinden emin olmak için Azure Event Hubs ölçümleri denetleyin. Event Hubs ileti alıyorsa ileti ölçümleri sıfırdan büyük olmalıdır.

  3. Giriş önizlemesinde bir zaman aralığı seçtiğinizden emin olun. Zaman aralığı seçin'i seçin ve sorgunuzu test etmeden önce örnek bir süre girin.

Important

Azure Stream Analytics işleri ağa enjekte edilmemişse, Stream Analytics'ten gelen bağlantıların kaynak IP adresine hiçbir şekilde güvenmeyin. Bunlar, zaman zaman gerçekleşen hizmet altyapısı işlemlerine bağlı olarak genel veya özel IP'ler olabilir.

Hatalı biçimlendirilmiş giriş olayları seri durumdan çıkarma hatalarına neden oluyor

Stream Analytics işinizin giriş akışı hatalı biçimlendirilmiş iletiler içerdiğinde seri durumdan çıkarma sorunları ortaya çıkar. Örneğin, bir JSON nesnesinde eksik bir parantez veya süslü parantez ya da zaman alanında hatalı bir zaman damgası biçimi, hatalı biçimlendirilmiş bir iletiye neden olabilir.

Stream Analytics işi, girdilerden birinden hatalı biçimlendirilmiş bir ileti aldığında, iletiyi işleme almaz ve sizi bir uyarıyla bilgilendirir. Stream Analytics işinizin Girişler kutucuğunda bir uyarı simgesi görünür. İş çalışır durumda olduğu sürece uyarı simgesi vardır.

Azure Stream Analytics için Girişler kutucuğunu gösteren ekran görüntüsü.

Hatanın ayrıntılarını ve hataya neden olan iletiyi (yük) görüntülemek için kaynak günlüklerini etkinleştirin. Seri durumdan çıkarma hatalarının oluşmasının birden çok nedeni vardır. Belirli seri durumdan çıkarma hataları hakkında daha fazla bilgi için bkz. Giriş verileri hataları. Kaynak günlükleri etkinleştirilmediyse Azure portalında kısa bir bildirim görüntülenir.

Giriş ayrıntıları hakkında uyarı bildirimini gösteren ekran görüntüsü.

İleti yükü 32 KB'tan büyükse veya ikili biçimdeyse, GitHub örnekleri deposunda bulunan CheckMalformedEvents.cs kodunu çalıştırın. Bu kod bölüm kimliği uzaklığını okur ve bu uzaklıkta bulunan verileri yazdırır.

Giriş seri durumdan çıkarma hatalarının diğer yaygın nedenleri şunlardır:

  • 9223372036854775807 değerinden büyük bir değere sahip bir tamsayı sütunu.
  • Nesne dizisi veya satırla ayrılmış nesneler yerine dizeler. Geçerli örnek: [{'a':1}]. Geçersiz örnek: "'a' :1".
  • İşinizde girdi olarak kullanılan, Avro biçimindeki bir Event Hubs Capture blobu.
  • Tek bir giriş olayında, yalnızca büyük/küçük harf bakımından farklı olan iki sütun; örneğin column1 ve COLUMN1.

Event Hubs bölüm sayısı değişiklikleri

Stream Analytics işi çalışırken bir olay hub'ının bölüm sayısı değiştiğinde, iş aşağıdaki hatayla başarısız olur:

Microsoft.Streaming.Diagnostics.Exceptions.InputPartitioningChangedException

Bu sorunu çözmek için Stream Analytics işini durdurup yeniden başlatın; böylece yeni bölüm sayısını algılayabilir.

İş, Event Hubs alıcılarının azami sayısını aşıyor

Event Hubs'ı kullanmak için en iyi yöntem, iş ölçeklenebilirliği için birden çok tüketici grubu kullanmaktır. Belirli bir girdi için Stream Analytics işindeki okuyucu sayısı, tek bir tüketici grubundaki okuyucu sayısını etkiler.

Alıcıların kesin sayısı, yatay ölçeklendirme topolojisi mantığındaki dahili uygulama ayrıntılarına bağlıdır. Numara dışarıdan gösterilmez. Bir iş başlatıldığında veya yükseltildiğinde okuyucu sayısı değişebilir.

Alıcı sayısı üst sınırı aştığında aşağıdaki hata iletisi görüntülenir. İleti, bir tüketici grubu altında Event Hubs'a var olan bağlantıların listesini içerir. etiketiAzureStreamAnalytics, bağlantıların bir Azure akış hizmetinden geldiğini gösterir.

The streaming job failed: Stream Analytics job has validation errors: Job will exceed the maximum amount of Event Hubs Receivers.

The following information may be helpful in identifying the connected receivers: Exceeded the maximum number of allowed receivers per partition in a consumer group which is 5. List of connected receivers – 
AzureStreamAnalytics_a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1_1, 
AzureStreamAnalytics_a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1_1, 
AzureStreamAnalytics_a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1_1, 
AzureStreamAnalytics_a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1_1, 
AzureStreamAnalytics_a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1_1.

Uyarı

İş yükseltmesi sırasında okuyucu sayısı değiştiğinde, denetim günlüklerine geçici uyarılar yazılır. Stream Analytics işleri bu geçici sorunlardan otomatik olarak kurtarılır.

Event Hubs örneğinize yeni bir tüketici grubu eklemek için şu adımları izleyin:

  1. Azure portalında oturum açın.

  2. Olay hub'ınızı bulun.

  3. Varlıklar başlığı altında Event Hubs'ı seçin.

  4. Event Hub'ı adına göre seçin.

  5. Event Hubs Örneği sayfasındaki Varlıklar başlığının altında Tüketici grupları'nı seçin. $Default adlı bir tüketici grubu listelenir.

  6. Yeni bir tüketici grubu eklemek için + Tüketici grubu'na tıklayın.

    Event Hubs'da tüketici grubu ekleme düğmesini gösteren ekran görüntüsü.

  7. Stream Analytics işinde olay hub'ına işaret eden girişi oluşturduğunuzda, tüketici grubunu orada belirttiniz. Event Hubs, hiçbir tüketici grubu belirtilmezse $Default kullanır. Bir tüketici grubu oluşturduktan sonra Stream Analytics işinde olay hub'ı girişini düzenleyin ve yeni tüketici grubunun adını belirtin.

Bölüm başına okuyucular Event Hubs sınırını aşıyor

Akış sorgunuzun söz dizimi, Event Hub girdisi için aynı kaynağa birden çok kez başvuruyorsa, iş motoru o aynı tüketici grubundan sorgu başına birden çok okuyucu kullanabilir. Aynı tüketici grubuna çok fazla referans olduğunda, iş beş sınırını aşabilir ve hataya neden olabilir. Bu durumlarda, birden çok tüketici grubu arasında birden çok giriş kullanarak daha fazla bölme yapabilirsiniz.

Bölüm başına okuyucu sayısının Event Hubs sınırı olan beşi aştığı senaryolar şunlardır:

  • Birden çok SELECT deyim: SELECT olay hub'ı girişine başvuran birden çok deyim kullanırsanız, her SELECT deyim yeni bir alıcı oluşturulmasına neden olur.

  • UNION: UNION kullandığınızda, aynı olay hub'ına ve tüketici grubuna işaret eden birden çok girdiye sahip olabilirsiniz.

  • SELF JOIN: Bir SELF JOIN işlemi kullandığınızda, aynı olay hub'ına birden çok kez başvurmak mümkündür.

Aşağıdaki en iyi yöntemler, bölüm başına okuyucu sayısının Event Hubs sınırı olan beşi aştığı senaryoları azaltmaya yardımcı olabilir.

WITH yan tümcesi kullanarak sorgunuzu birden çok adıma bölme

WITH yan tümcesi, sorgudaki bir FROM yan tümcenin başvurabileceği geçici bir adlandırılmış sonuç kümesi belirtir. WITH yan tümcesini tek bir SELECT deyiminin yürütme kapsamında tanımlarsınız.

Örneğin, bu sorgu yerine:

SELECT foo 
INTO output1
FROM inputEventHub

SELECT bar
INTO output2
FROM inputEventHub 
…

Şu sorguyu kullanın:

WITH data AS (
   SELECT * FROM inputEventHub
)

SELECT foo
INTO output1
FROM data

SELECT bar
INTO output2
FROM data
…

Girişlerin farklı tüketici gruplarına bağlandığından emin olun

Aynı Event Hubs tüketici grubuna üç veya daha fazla girişin bağlandığı sorgular için ayrı tüketici grupları oluşturun. Bu görev ek Stream Analytics girişleri oluşturulmasını gerektirir.

Farklı tüketici gruplarıyla ayrı girişler oluşturma

Aynı olay hub'ı için farklı tüketici gruplarıyla ayrı girişler oluşturabilirsiniz. Aşağıdaki sorgu örneğinde UNION, InputOne ve InputTwo aynı Event Hubs kaynağına başvurur. Herhangi bir sorguda farklı tüketici gruplarına sahip ayrı girişler olabilir. Sorgu UNION yalnızca bir örnektir.

WITH 
DataOne AS 
(
SELECT * FROM InputOne 
),

DataTwo AS 
(
SELECT * FROM InputTwo 
),

SELECT foo FROM DataOne
UNION 
SELECT foo FROM DataTwo

Bölüm başına okuyucu sayısı, IoT Hub sınırını aşıyor

Stream Analytics işleri, IoT Hub olayları bağlamak ve okumak için Azure IoT Hub'daki yerleşik Event Hubs uyumlu uç noktayı kullanır. Bölüm başına okuyucularınız IoT Hub sınırlarını aşarsa, sorunu çözmek için Event Hubs çözümlerini kullanabilirsiniz. yerleşik uç nokta için IoT Hub portalı uç noktası oturumu veya IoT Hub SDK aracılığıyla bir tüketici grubu oluşturabilirsiniz.

Yardım alın

Daha fazla yardım için Azure Stream Analytics için Microsoft Soru-Cevap sayfasını deneyin.

Sonraki Adımlar