Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Azure Stream Analytics'da geç varış ve sıra dışı olay ilkelerini ayarlama ve kullanma işlemleri açıklanmaktadır. Bu ilkeler yalnızca sorgunuzda TIMESTAMP BY yan tümcesini kullandığınızda uygulanır ve bunlar yalnızca bulut giriş kaynakları için uygulanır.
Olay saati ve varış saati
Stream Analytics işiniz olayları olay saatlerine veya varış saatlerine göre işleyebilir. Olay/uygulama zamanı , olay yükünde (olay oluşturulduğunda) mevcut olan zaman damgasıdır. Varış zamanı , olayın giriş kaynağında (Event Hubs/IoT Hub/Blob depolama) alındığı zaman damgasıdır.
Stream Analytics varsayılan olarak olayları varış zamanına göre işler, ancak sorgunuzdaki TIMESTAMP BY yan tümcesini kullanarak olayları olay saatine göre işlemeyi seçebilirsiniz. Geç varış ve sırasız olay politikaları yalnızca olayları olay zamanına göre işlerseniz geçerlidir. Bu ayarları yapılandırırken senaryonuz için gecikme süresi ve doğruluk gereksinimlerini göz önünde bulundurun.
Geç varış ilkesi nedir?
Bazen olaylar çeşitli nedenlerle geç gelir. Örneğin, 40 saniye geç gelen bir olayın olay zamanı = 00:10:00 ve varış zamanı = 00:10:40 olur. Geç varış ilkesini 15 saniye olarak ayarlarsanız, 15 saniyeden sonra gelen tüm olaylar bırakılır (Stream Analytics tarafından işlenmez) veya olay süresi ayarlanır. Yukarıdaki örnekte, olay 40 saniye geç geldiğinden (ilke kümesinden daha fazla), olay süresi en fazla geç varış ilkesi 00:10:25 (varış saati - geç varış ilkesi değeri) olarak ayarlanır. Varsayılan geç varış ilkesi 5 saniyedir.
Sırasız yürütme ilkesi nedir?
Olaylar da sıra gözetmeden gelebilir. Etkinlik süresi geç varış ilkesine göre ayarlandıktan sonra, sıra dışı olayları otomatik olarak bırakmayı veya ayarlamayı da seçebilirsiniz. Bu ilkeyi 8 saniye olarak ayarlarsanız, sıra dışı gelen ancak 8 saniyelik pencere içinde gerçekleşen tüm olaylar olay zamanına göre yeniden sıralanır. Daha geç gelen olaylar ya yok sayılır ya da maksimum sırasızlık ilkesi değerine göre ayarlanır. Varsayılan sırasız politika 0 saniyedir.
Gecikmiş ve sırası bozulmuş olayları ayarlama veya atma
Olaylar, yapılandırdığınız ilkelere göre geç veya sıra dışı olarak ulaşırsa, bu tür olayları bırakabilir (Stream Analytics tarafından işlenmez) veya olay sürelerini ayarlayabilirsiniz.
Aşağıdaki örnek, bu politikaların nasıl uygulandığını gösterir.
- Geç varış ilkesi: 15 saniye
- Sıra bozukluğu politikası: 5 saniye
| Etkinlik No. | Olay Saati | Varış Saati | System.Timestamp | Açıklama |
|---|---|---|---|---|
| 1 | 00:10:00 | 00:10:40 | 00:10:25 | Olay geç geldi ve tolerans düzeyinin dışındaydı. Bu nedenle olay süresi maksimum geç varış toleransı olarak ayarlanır. |
| 2 | 00:10:30 | 00:10:41 | 00:10:30 | Olay geç geldi ancak tolerans sınırları içindeydi. Yani olay zamanı ayarlanmaz. |
| 3 | 00:10:42 | 00:10:42 | 00:10:42 | Olay zamanında geldi. Ayarlama gerekmez. |
| 4 | 00:10:38 | 00:10:43 | 00:10:38 | Olay, sırası dışında ancak 5 saniyelik tolerans içinde geldi. Yani, olay zamanı ayarlanmaz. Analiz amacıyla, bu olay toplam 5 olay dikkate alındığında 3 numaralı olaydan önce gerçekleşen olay olarak kabul edilir. Gerçek sıralama: 1, 2, 5, 4, 3. |
| 5 | 00:10:35 | 00:10:45 | 00:10:37 | Olay, sırası bozuk şekilde geldi ve 5 saniyelik toleransın dışındaydı. Yani, olay zamanı sırasızlık toleransının maksimumuna ayarlanır. |
Geç varış ve sipariş dışı ilkeler iş çıkışını geciktirebilir mi?
Evet. Varsayılan olarak, sıra dışı politikası sıfır olarak ayarlanmıştır (00 dakika ve 00 saniye). Varsayılanı değiştirirseniz, işinizin ilk çıktısı en az bu değer kadar gecikir.
Girişlerinizin bölümlerinden biri olayları almıyorsa, çıkışınızın geç varış ilkesi değeri tarafından geciktirilmesi beklenmelidir. Bunun nedenini öğrenmek için bkz. InputPartitionNotProgressing iletileri.
Etkinlik günlüğümde LateInputEvents iletilerini görüyorum
Bu iletiler, olayların geç ulaştığını ve yapılandırmanıza göre ya atıldığını ya da uyarlandığını size bildirmek için gösterilir. Geç varış ilkesini uygun şekilde yapılandırdıysanız bu iletileri yoksayabilirsiniz.
İşte bu iletinin bir örneği:
{"message Time":"2019-02-04 17:11:52Z","error":null,
"message":"First Occurred: 02/04/2019 17:11:48 | Resource Name: ASAjob | Message: Source 'ASAjob' had 24 data errors of kind 'LateInputEvent' between processing times '2019-02-04T17:10:49.7250696Z' and '2019-02-04T17:11:48.7563961Z'. Input event with application timestamp '2019-02-04T17:05:51.6050000' and arrival time '2019-02-04T17:10:44.3090000' was sent later than configured tolerance.","type":"DiagnosticMessage","correlation ID":"aaaa0000-bb11-2222-33cc-444444dddddd"}
Etkinlik günlüğümde InputPartitionNotProgressing ifadesini görüyorum
Giriş kaynağınızın (Event Hub/IoT Hub) büyük olasılıkla birden çok bölümü vardır. Azure Stream Analytics, t1 zaman damgası için yalnızca birleştirilen tüm bölümler en az t1 zamanına ulaştıktan sonra çıkış üretir. Örneğin, sorgunun iki bölmesi olan bir Event Hub'daki bir bölmeden okuduğunu varsayalım. Bölümlerden biri olan P1'de t1 zamanına kadar olaylar vardır. Diğer bölüm olan P2'de t1 + x saatlerine kadar olaylar vardır. Çıkış, t1 anına kadar üretilir. Ancak açıkça belirtilmiş bir PARTITION BY PartitionId ifadesi varsa, her iki bölüm de bağımsız olarak ilerler.
Aynı giriş akışından birden çok bölüm birleştirildiğinde, geç varış toleransı her bölümün yeni verileri beklediği maksimum süredir. Event hub’ınızda yalnızca bir bölüm varsa veya IoT Hub girdi almıyorsa, bu bölümün zaman çizelgesi geç varış toleransı eşiğine ulaşana kadar ilerlemez. Bu, çıktınızı geç varış toleransı eşiği kadar geciktirir. Böyle durumlarda aşağıdaki iletiyi görebilirsiniz:
{"message Time":"2/3/2019 8:54:16 PM UTC","message":"Input Partition [2] does not have additional data for more than [5] minute(s). Partition will not progress until either events arrive or late arrival threshold is met.","type":"InputPartitionNotProgressing","correlation ID":"0000000000-0000-0000-0000-00000000000000"}
Bu ileti, girdinizdeki en az bir partisyonun boş olduğunu ve bu nedenle çıktınızın geç varış eşiği kadar gecikeceğini bildirir. Bunun üstesinden gelmek için şunları yapmanızı öneririz:
- Event Hub/IoT Hub'ınızın tüm bölümlerinin girdi aldığından emin olun.
- Sorgunuzda Partition by PartitionID yan tümcesini kullanın.
Geç varış ilkem 0 olarak ayarlandığında bile neden 5 saniyelik bir gecikme görüyorum?
Hiç giriş almamış bir giriş bölümü olduğunda bu durum ortaya çıkar. Bu davranışı doğrulamak için giriş ölçümlerini bölüme göre doğrulayabilirsiniz.
Bir bölüm için, yapılandırılmış geç varış eşiğini aşan bir süre boyunca hiç veri gelmezse Stream Analytics, olay sıralamasıyla ilgili dikkat edilmesi gerekenler bölümünde açıklandığı gibi uygulama zaman damgasını ilerletir. Bunun için tahmini varış zamanı gerekir. Bölümde hiç veri yoksa Stream Analytics, varış zamanını yerel saat - 5 saniye olarak tahmin eder. Bu nedenle, hiç veriye sahip olmayan bölümler 5 saniyelik bir filigran gecikmesi gösterebilir.