Opis obsługi czasu w Azure Stream AnalyticsUnderstand time handling in Azure Stream Analytics

W tym artykule dowiesz się, jak dokonać wyboru projektu w celu rozwiązywania praktycznych problemów z obsługą czasu w Azure Stream Analytics zadaniach.In this article, you learn how to make design choices to solve practical time handling problems in Azure Stream Analytics jobs. Decyzje dotyczące projektowania obsługi czasu są ściśle powiązane z czynnikami porządkowania zdarzeń.Time handling design decisions are closely related to event ordering factors.

Koncepcje czasu w tleBackground time concepts

Aby lepiej utworzyć ramkę w dyskusji, zdefiniujmy niektóre koncepcje w tle:To better frame the discussion, let's define some background concepts:

  • Czas zdarzenia: czas wystąpienia oryginalnego zdarzenia.Event time: The time when the original event happened. Na przykład, gdy przesuwanie samochodu na autostradę zbliża się do kabiny.For example, when a moving car on the highway approaches a toll booth.

  • Czas przetwarzania: czas, gdy zdarzenie osiągnie system przetwarzania i jest zaobserwowane.Processing time: The time when the event reaches the processing system and is observed. Na przykład, gdy czujnik kabiny z opłatami jest widoczny dla samochodu i system komputerowy zajmuje kilka chwil, aby przetwarzać dane.For example, when a toll booth sensor sees the car and the computer system takes a few moments to process the data.

  • Znak wodny: znacznik czasu zdarzenia wskazujący, które zdarzenia punktu zostały ingressed do procesora przesyłania strumieniowego.Watermark: An event time marker that indicates up to what point events have been ingressed to the streaming processor. Znaki wodne pozwalają systemowi wskazywać na wyczyszczenie zdarzeń.Watermarks let the system indicate clear progress on ingesting the events. Ze względu na charakter strumieni, przychodzące dane zdarzeń nigdy nie są przerywane, dlatego znaki wodne wskazują postęp do określonego punktu w strumieniu.By the nature of streams, the incoming event data never stops, so watermarks indicate the progress to a certain point in the stream.

    Koncepcja znaku wodnego jest ważna.The watermark concept is important. Znaki wodne umożliwiają Stream Analytics określenie, kiedy system może generować kompletne, poprawne i powtarzalne wyniki, które nie muszą zostać wycofane.Watermarks allow Stream Analytics to determine when the system can produce complete, correct, and repeatable results that don’t need to be retracted. Przetwarzanie może odbywać się w przewidywalny i powtarzalny sposób.The processing can be done in a predictable and repeatable way. Na przykład jeśli należy wykonać ponowną inwentaryzację dla określonego warunku obsługi błędów, znaki wodne są bezpiecznymi punktami początkowymi i końcowymi.For example, if a recount needs to be done for some error handling condition, watermarks are safe starting and ending points.

Aby uzyskać dodatkowe zasoby związane z tym tematem, zobacz wpis w blogu Tyler Akidau, przesyłania strumieniowego 101 i przesyłania strumieniowego 102.For additional resources on this subject, see Tyler Akidau's blog posts Streaming 101 and Streaming 102.

Wybierz najlepszy czas rozpoczęciaChoose the best starting time

Stream Analytics zapewnia użytkownikom dwie opcje czasu wybierania: czas dojazdu i czas aplikacji.Stream Analytics gives users two choices for picking event time: arrival time and application time.

Czas przybyciaArrival time

Czas przybycia jest przypisywany do źródła danych wejściowych, gdy zdarzenie osiągnie źródło.Arrival time is assigned at the input source when the event reaches the source. Można uzyskać dostęp do czasu przybycia przy użyciu właściwości EventEnqueuedUtcTime Event Hubs dla danych wejściowych, właściwości IoTHub. EnqueuedTime dla danych wejściowych IoT Hub i właściwości BlobProperties. LastModified dla danych wejściowych obiektu BLOB.You can access arrival time by using the EventEnqueuedUtcTime property for Event Hubs input, the IoTHub.EnqueuedTime property for IoT Hub input, and the BlobProperties.LastModified property for blob input.

Czas przybycia jest używany domyślnie i najlepiej jest używany w scenariuszach archiwizowania danych, w których logika czasowa nie jest konieczna.Arrival time is used by default and is best used for data archiving scenarios where temporal logic isn't necessary.

Czas aplikacji (nazywany także czasem zdarzenia)Application time (also named Event Time)

Czas aplikacji jest przypisywany podczas generowania zdarzenia i jest częścią ładunku zdarzenia.Application time is assigned when the event is generated, and it's part of the event payload. Aby przetwarzać zdarzenia według czasu aplikacji, należy użyć klauzuli timestamp by w zapytaniu SELECT.To process events by application time, use the Timestamp by clause in the SELECT query. Jeśli sygnatura czasowa przez nie jest obecna, zdarzenia są przetwarzane przez czas przybycia.If Timestamp by is absent, events are processed by arrival time.

Ważne jest używanie sygnatury czasowej w ładunku, gdy logika czasowa jest uwzględniana w przypadku opóźnień w systemie źródłowym lub w sieci.It's important to use a timestamp in the payload when temporal logic is involved to account for delays in the source system or in the network. Czas przypisany do zdarzenia jest dostępny w systemie. SYGNATURa CZASowa.The time assigned to an event is available in SYSTEM.TIMESTAMP.

Jak postęp Azure Stream AnalyticsHow time progresses in Azure Stream Analytics

W przypadku korzystania z czasu aplikacji postęp czasu jest oparty na zdarzeniach przychodzących.When you use application time, the time progression is based on the incoming events. Trudne jest, aby system przetwarzania strumienia wiedział, czy nie ma żadnych zdarzeń, lub jeśli zdarzenia są opóźnione.It's difficult for the stream processing system to know if there are no events, or if events are delayed. Z tego powodu Azure Stream Analytics generuje znaki wodne heurystyczne w następujący sposób dla każdej partycji wejściowej:For this reason, Azure Stream Analytics generates heuristic watermarks in the following ways for each input partition:

  • Gdy istnieje zdarzenie przychodzące, znak wodny to największe Stream Analytics czasu zdarzenia, które wystąpiły do tej pory pomniejszone o rozmiar okna tolerancji niezależnej od kolejności.When there's any incoming event, the watermark is the largest event time Stream Analytics has seen so far minus the out-of-order tolerance window size.

  • Gdy nie ma żadnego przychodzącego zdarzenia, jest to bieżący szacowany czas przybycia pomniejszony o opóźnione okno tolerancji przybycia.When there's no incoming event, the watermark is the current estimated arrival time minus the late arrival tolerance window. Szacowany czas przybycia to czas, który upłynął od momentu ostatniego wyświetlenia zdarzenia wejściowego, a także czas przybycia zdarzenia wejściowego.The estimated arrival time is the time that has elapsed from the last time an input event was seen plus that input event's arrival time.

    Czas przybycia można oszacować tylko w przypadku, gdy rzeczywisty czas przybycia jest generowany dla wejściowego brokera zdarzeń, takiego jak Event Hubs, ani na Azure Stream Analytics maszyny wirtualnej przetwarzają zdarzenia.The arrival time can only be estimated because the real arrival time is generated on the input event broker, such as Event Hubs, nor on the Azure Stream Analytics VM processing the events.

Projekt obsługuje dwa dodatkowe cele inne niż generowanie znaków wodnych:The design serves two additional purposes other than generating watermarks:

  1. System generuje wyniki w odpowiednim czasie z lub bez zdarzeń przychodzących.The system generates results in a timely fashion with or without incoming events.

    Masz kontrolę nad tym, jak długo chcesz zobaczyć wyniki wyjściowe.You have control over how timely you want to see the output results. W Azure Portal na stronie porządkowanie zdarzeń zadania Stream Analytics można skonfigurować ustawienie zdarzenia poza kolejnością .In the Azure portal, on the Event ordering page of your Stream Analytics job, you can configure the Out of order events setting. Po skonfigurowaniu tego ustawienia należy rozważyć wymianę osi czasu z tolerancją zdarzeń poza kolejnością w strumieniu zdarzeń.When you configure that setting, consider the trade-off of timeliness with tolerance of out-of-order events in the event stream.

    Okno tolerancji opóźnionego przybycia jest niezbędne, aby zachować generowanie znaków wodnych nawet w przypadku braku zdarzeń przychodzących.The late arrival tolerance window is necessary to keep generating watermarks, even in the absence of incoming events. Czasami może istnieć okres, w którym nie występują żadne przychodzące zdarzenia, na przykład gdy strumień wejściowy zdarzenia jest rozrzedzony.At times, there may be a period where no incoming events come in, like when an event input stream is sparse. Ten problem jest zaostrzany przez użycie wielu partycji w ramach wejściowego brokera zdarzeń.That problem is exacerbated by the use of multiple partitions in the input event broker.

    Systemy przetwarzania danych przesyłanych strumieniowo bez okna tolerancji opóźnionego przybycia mogą mieć wpływ na opóźnione dane wyjściowe, gdy dane wejściowe są rozrzedzone i używane są wiele partycji.Streaming data processing systems without a late arrival tolerance window may suffer from delayed outputs when inputs are sparse and multiple partitions are used.

  2. Zachowanie systemu musi być powtarzane.The system behavior needs to be repeatable. Powtarzalność to ważna właściwość systemu przetwarzania danych przesyłanych strumieniowo.Repeatability is an important property of a streaming data processing system.

    Znak wodny jest uzyskiwany od czasu wejścia i czasu aplikacji.The watermark is derived from the arrival time and application time. Oba elementy są utrwalane w brokerze zdarzeń i w rezultacie powtarzane.Both are persisted in the event broker, and thus repeatable. W przypadku oszacowania czasu nadejścia w przypadku braku zdarzeń Azure Stream Analytics dziennik szacowany czas przybycia dla powtarzania podczas odtwarzania w przypadku odzyskiwania po awarii.When an arrival time is estimated in the absence of events, Azure Stream Analytics journals the estimated arrival time for repeatability during replay for failure recovery.

Jeśli zdecydujesz się na użycie czasu dojazdu jako czasu zdarzenia, nie musisz konfigurować wartości tolerancja niezależna od kolejności i opóźnionego przybycia.When you choose to use arrival time as the event time, there you don't need to configure the out-of-order tolerance and late arrival tolerance. Ponieważ czas przybycia jest gwarantowany do zwiększenia w brokerze zdarzeń wejściowych, Azure Stream Analytics po prostu nie uwzględnia konfiguracji.Since arrival time is guaranteed to be increasing in the input event broker, Azure Stream Analytics simply disregards the configurations.

Późne nadejście zdarzeńLate arriving events

Według definicji okna tolerancji opóźnionego przybycia dla każdego przychodzącego zdarzenia Azure Stream Analytics porównuje czas zdarzenia z czasem przybycia.By definition of late arrival tolerance window, for each incoming event, Azure Stream Analytics compares the event time with the arrival time. Jeśli czas zdarzenia znajduje się poza oknem tolerancji, można skonfigurować system do porzucenia zdarzenia lub dostosować czas do przekroczenia limitu czasu.If the event time is outside of the tolerance window, you can configure the system to drop the event or adjust the event's time to be within the tolerance.

Po wygenerowaniu znaków wodnych usługa może potencjalnie odbierać zdarzenia ze zdarzeniem krótszym niż wartość limitu czasu.Once watermarks are generated, the service can potentially receive events with an event time lower than the watermark. Można skonfigurować usługę do porzucenia tych zdarzeń lub dostosować czas do wartości limitu.You can configure the service to either drop those events, or adjust the event's time to the watermark value.

W ramach korekty zdarzenie System. timestamp ma ustawioną nową wartość, ale samo pole czasu zdarzenia nie jest zmieniane.As a part of the adjustment, the event's System.Timestamp is set to the new value, but the event time field itself is not changed. Ta korekta jest jedyną sytuacją, w której zdarzenie System. timestamp może różnić się od wartości w polu czas zdarzenia i może spowodować wygenerowanie nieoczekiwanych wyników.This adjustment is the only situation where an event's System.Timestamp can be different from the value in the event time field and may cause unexpected results to be generated.

Obsługa zmian czasu z podstrumieniamiHandle time variation with substreams

Opisany mechanizm generowania znaków wodnych algorytmu heurystycznego działa dobrze w większości przypadków, gdy czas jest przeważnie zsynchronizowany z różnymi nadawcami zdarzeń.The heuristic watermark generation mechanism described works well in most of cases where time is mostly synchronized between the various event senders. Jednak w rzeczywistości, szczególnie w wielu scenariuszach IoT, system ma małą kontrolę nad zegarem dla nadawców zdarzeń.However, in real life, especially in many IoT scenarios, the system has little control over the clock on the event senders. Nadawcy zdarzeń mogą wyróżnić wszystkie urządzenia w polu, na przykład na różnych wersjach sprzętu i oprogramowania.The event senders could be all sorts of devices in the field, perhaps on different versions of hardware and software.

Zamiast używać znaku wodnego, który jest globalny dla wszystkich zdarzeń na partycji wejściowej, Stream Analytics ma inny mechanizm nazywany podstrumieniami.Instead of using a watermark that is global to all events in an input partition, Stream Analytics has another mechanism called substreams. Można użyć podstrumieńów w zadaniu, pisząc kwerendę zadania, która używa klauzuli timestamp by i słowa kluczowego w.You can utilize substreams in your job by writing a job query that uses the TIMESTAMP BY clause and the keyword OVER. Aby wyznaczyć Podstrumień, podaj nazwę kolumny klucza po słowie kluczowym over , na przykład deviceid , tak aby system stosował zasady czasu według tej kolumny.To designate the substream, provide a key column name after the OVER keyword, such as a deviceid, so that system applies time policies by that column. Każdy Podstrumień pobiera własny niezależny znak wodny.Each substream gets its own independent watermark. Mechanizm ten jest przydatny do zezwalania na generowanie czasowych danych wyjściowych w przypadku dużych pochylenia zegara lub opóźnień sieci między nadawcami zdarzeń.This mechanism is useful to allow timely output generation, when dealing with large clock skews or network delays among event senders.

Podstrumieńy są unikatowym rozwiązaniem oferowanym przez Azure Stream Analytics i nie są oferowane przez inne systemy przetwarzania danych przesyłanych strumieniowo.Substreams are a unique solution provided by Azure Stream Analytics, and are not offered by other streaming data processing systems.

W przypadku korzystania z podstrumieni, Stream Analytics ma zastosowanie do przychodzących zdarzeń.When you use substreams, Stream Analytics applies the late arrival tolerance window to incoming events. Tolerancja późnego przybycia decyduje o maksymalnej ilości, o jaką różne podstrumienie mogą się różnić od siebie.The late arrival tolerance decides the maximum amount by which different substreams can be apart from each other. Na przykład jeśli urządzenie 1 ma sygnaturę czasową 1, a urządzenie 2 ma sygnaturę czasową 2, najwyżej późna tolerancja przybycia ma sygnaturę czasową 2 minus timestamp 1.For example, if Device 1 is at Timestamp 1, and Device 2 is at Timestamp 2, the at most late arrival tolerance is Timestamp 2 minus Timestamp 1. Ustawienie domyślne to 5 sekund i jest prawdopodobnie zbyt małe w przypadku urządzeń z rozbieżnymi sygnaturami czasowymi.The default setting is 5 seconds and is likely too small for devices with divergent timestamps. Zalecamy rozpoczęcie od 5 minut i dostosowanie ich zgodnie z wzorcem odchylenia zegara urządzenia.We recommend that you start with 5 minutes and make adjustments according to their device clock skew pattern.

Wczesne nadejście zdarzeńEarly arriving events

Być może zauważono inną koncepcję o nazwie okno wczesnego przybycia, która wygląda jak przeciwieństwo okna tolerancji opóźnionego przybycia.You may have noticed another concept called early arrival window that looks like the opposite of late arrival tolerance window. To okno jest ustalone na 5 minut i służy innym przeznaczeniu w oknie tolerancji opóźnionego przybycia.This window is fixed at 5 minutes and serves a different purpose from the late arrival tolerance window.

Ponieważ Azure Stream Analytics gwarantuje pełne wyniki, można określić godzinę rozpoczęcia zadania jako pierwszy czas wyjścia zadania, a nie czas wejściowy.Because Azure Stream Analytics guarantees complete results, you can only specify job start time as the first output time of the job, not the input time. Godzina rozpoczęcia zadania jest wymagana, aby całe okno zostało przetworzone, a nie tylko od środka okna.The job start time is required so that the complete window is processed, not just from the middle of the window.

Stream Analytics określa czas rozpoczęcia od specyfikacji zapytania.Stream Analytics derives the start time from the query specification. Jednak ze względu na to, że wejściowy Broker zdarzeń jest indeksowany tylko przez czas przybycia, system musi przetłumaczyć czas zdarzenia rozpoczęcia na czas przybycia.However, because the input event broker is only indexed by arrival time, the system has to translate the starting event time to arrival time. System może rozpocząć przetwarzanie zdarzeń od tego momentu w danych wejściowych brokera zdarzeń.The system can start processing events from that point in the input event broker. W przypadku wczesnego limitu okna tłumaczenie jest proste: czas rozpoczęcia zdarzenia minus 5 minut wczesnego przybycia okna.With the early arriving window limit, the translation is straightforward: starting event time minus the 5-minute early arriving window. To obliczenie oznacza również, że system porzuca wszystkie zdarzenia, które są widoczne jako czas zdarzenia 5 minut wcześniejszy niż czas przybycia.This calculation also means that the system drops all events that are seen as having an event time 5 minutes earlier than the arrival time. Metryka zdarzeń wczesnego wejścia jest zwiększana, gdy zdarzenia są porzucane.The early input events metric is incremented when the events are dropped.

Ta koncepcja służy do zapewnienia powtarzania przetwarzania niezależnie od tego, gdzie rozpoczyna się wyprowadzanie danych wyjściowych.This concept is used to ensure the processing is repeatable no matter where you start to output from. Bez takiego mechanizmu nie można zagwarantowania powtarzalności, tak jak wiele innych systemów przesyłania strumieniowego.Without such a mechanism, it would not be possible to guarantee repeatability, as many other streaming systems claim they do.

Skutki uboczne dla tolerancji czasu porządkowania zdarzeńSide effects of event ordering time tolerances

Stream Analytics zadania mają kilka opcji określania kolejności zdarzeń .Stream Analytics jobs have several Event ordering options. Dwie można skonfigurować w Azure Portal: ustawienia zdarzenia poza kolejnością (Tolerancja braku kolejności) oraz zdarzenia, które docierają do późnego ustawienia (Tolerancja późnego przybycia).Two can be configured in the Azure portal: the Out of order events setting (out-of-order tolerance), and the Events that arrive late setting (late arrival tolerance). Tolerancja wczesnego przybycia jest stała i nie można jej skorygować.The early arrival tolerance is fixed and cannot be adjusted. Te zasady czasu są używane przez Stream Analytics, aby zapewnić silne gwarancje.These time policies are used by Stream Analytics to provide strong guarantees. Jednak te ustawienia mają pewne nieoczekiwane konsekwencje:However, these settings do have some sometimes unexpected implications:

  1. Przypadkowe wysyłanie zdarzeń, które są zbyt wczesne.Accidentally sending events that are too early.

    Wczesne zdarzenia nie powinny być normalnie wychodzące.Early events should not be outputted normally. Istnieje możliwość, że wczesne zdarzenia są wysyłane do danych wyjściowych, jeśli zegar nadawcy jest uruchamiany zbyt szybko.It's possible that early events are sent to the output if sender’s clock is running too fast though. Wszystkie wczesne zdarzenia, które są porzucane, więc nie będą wyświetlane z danych wyjściowych.All early arriving events are dropped, so you will not see any of them from the output.

  2. Wysyłanie starych zdarzeń do Event Hubs do przetworzenia przez Azure Stream Analytics.Sending old events to Event Hubs to be processed by Azure Stream Analytics.

    Stare zdarzenia mogą wydawać się nieszkodliwe w pierwszej kolejności, ze względu na zastosowanie tolerancji opóźnionego przybycia, stare zdarzenia mogą zostać usunięte.While old events may seem harmless at first, because of the application of the late arrival tolerance, the old events may be dropped. Jeśli zdarzenia są zbyt stare, wartość System. timestamp jest zmieniana podczas pozyskiwania zdarzeń.If the events are too old, the System.Timestamp value is altered during event ingestion. Ze względu na to zachowanie obecnie Azure Stream Analytics jest bardziej odpowiednie dla scenariuszy przetwarzania zdarzeń niemal w czasie rzeczywistym, a nie do historycznych scenariuszy przetwarzania zdarzeń.Due to this behavior, currently Azure Stream Analytics is more suited for near-real-time event processing scenarios, instead of historical event processing scenarios. Można ustawić zdarzenia, które docierają do największej możliwej wartości (20 dni) w celu obejścia tego zachowania w niektórych przypadkach.You can set the Events that arrive late time to the largest possible value (20 days) to work around this behavior in some cases.

  3. Dane wyjściowe pozornie są opóźnione.Outputs seem to be delayed.

    Pierwszy znak wodny jest generowany w obliczonym czasie: Maksymalny czas zdarzenia , który został dotychczas obserwowany przez system, pomniejszony o rozmiar okna tolerancji niezależnej od kolejności.The first watermark is generated at the calculated time: the maximum event time the system has observed so far, minus the out-of-order tolerance window size. Domyślnie tolerancja poza kolejnością jest skonfigurowana na wartość zero (00 minut i 00 sekund).By default, the out-of-order tolerance is configured to zero (00 minutes and 00 seconds). Gdy ustawisz ją na wyższą, niezerową wartość czasu, pierwsze wyjście zadania przesyłania strumieniowego jest opóźnione o tę wartość czasu (lub większą) z powodu wyliczania czasu pierwszego znaku wodnego.When you set it to a higher, non-zero time value, the streaming job's first output is delayed by that value of time (or greater) due to the first watermark time that is calculated.

  4. Dane wejściowe są rozrzedzone.Inputs are sparse.

    Gdy nie ma danych wejściowych w danej partycji, czas znaku wodnego jest obliczany jako czas przybycia pomniejszony o opóźnione okno tolerancja przybycia.When there is no input in a given partition, the watermark time is calculated as the arrival time minus the late arrival tolerance window. W związku z tym, jeśli zdarzenia wejściowe są rzadko i rozrzedzone, dane wyjściowe można opóźnić o ten czas.As a result, if input events are infrequent and sparse, the output can be delayed by that amount of time. Domyślne zdarzenia, które docierają do wartości późnej, to 5 sekund.The default Events that arrive late value is 5 seconds. Należy się spodziewać, że podczas wysyłania zdarzeń wejściowych po jednym naraz będzie widoczne pewne opóźnienie, na przykład.You should expect to see some delay when sending input events one at a time, for example. Opóźnienia mogą uzyskać gorszą wartość, gdy ustawiasz zdarzenia, które docierają do późnego okna do dużej wartości.The delays can get worse, when you set Events that arrive late window to a large value.

  5. Wartość System. timestamp jest różna od godziny w polu czas zdarzenia .System.Timestamp value is different from the time in the event time field.

    Jak opisano wcześniej, system dostosowuje czas zdarzenia przez okna tolerancja niezależna od kolejności lub opóźnienia przybycia.As described previously, the system adjusts event time by the out-of-order tolerance or late arrival tolerance windows. Wartość System. timestamp zdarzenia jest korygowana, ale nie jest to pole czasu zdarzenia .The System.Timestamp value of the event is adjusted, but not the event time field. Może służyć do identyfikowania zdarzeń, dla których są dostosowane znaczniki czasu.This can be used to identify for which events the timestamps adjusted. Jeśli system zmienił sygnaturę czasową z powodu jednej z tolerancji, zwykle są one takie same.If the system changed the timestamp due to one of the tolerances, normally they are the same.

Metryki do obserwowaniaMetrics to observe

Można obserwować liczbę efektów tolerancji czasu porządkowania zdarzeń za pomocą metryk zadania Stream Analytics.You can observe a number of the Event ordering time tolerance effects through Stream Analytics job metrics. Następujące metryki są istotne:The following metrics are relevant:

MetricMetric OpisDescription
Zdarzenia poza kolejnościąOut-of-Order Events Wskazuje liczbę zdarzeń odebranych poza kolejnością, które zostały porzucone lub miały skorygowaną sygnaturę czasową.Indicates the number of events received out of order, that were either dropped or given an adjusted timestamp. Ta Metryka jest bezpośrednio objęta konfiguracją ustawienia zdarzenia poza kolejnością na stronie porządkowania zdarzeń w zadaniu w Azure Portal.This metric is directly impacted by the configuration of the Out of order events setting on the Event ordering page on the job in the Azure portal.
Opóźnione zdarzenia wejścioweLate Input Events Wskazuje liczbę zdarzeń opóźnionych ze źródła.Indicates the number of events arriving late from the source. Ta Metryka obejmuje zdarzenia, które zostały usunięte lub miały sygnaturę czasową.This metric includes events that have been dropped or have had their timestamp was adjusted. Ta Metryka ma bezpośredni wpływ na konfigurację zdarzeń, które docierają do późnego ustawienia na stronie porządkowanie zdarzeń w zadaniu w Azure Portal.This metric is directly impacted by the configuration of the Events that arrive late setting in the Event ordering page on the job in the Azure portal.
Wczesne zdarzenia wejścioweEarly Input Events Wskazuje liczbę zdarzeń, które docierają wcześniej ze źródła, które zostały usunięte, lub jeśli ich sygnatura czasowa została dostosowana, jeśli są dłuższe niż 5 minut.Indicates the number of events arriving early from the source that have either been dropped, or their timestamp has been adjusted if they are beyond 5 minutes early.
Opóźnienie znaku wodnegoWatermark Delay Wskazuje opóźnienie zadania przetwarzania danych przesyłanych strumieniowo.Indicates the delay of the streaming data processing job. Więcej informacji znajduje się w poniższej sekcji.See more information in the following section.

Szczegóły opóźnienia znaku wodnegoWatermark delay details

Metryka opóźnienia znaku wodnego jest obliczana jako czas zegara ściany węzła przetwarzania pomniejszona o największy znak wodny, który wcześniej widział.The Watermark delay metric is computed as the wall clock time of the processing node minus the largest watermark it has seen so far. Aby uzyskać więcej informacji, zobacz wpis w blogu z opóźnieniem dla znaku wodnego.For more information, see the watermark delay blog post.

Może istnieć kilka powodów, dla których ta wartość metryki jest większa niż 0 w przypadku normalnego działania:There can be several reasons this metric value is larger than 0 under normal operation:

  1. Nieodłączne Opóźnienie przetwarzania potoku przesyłania strumieniowego.Inherent processing delay of the streaming pipeline. Zwykle to opóźnienie jest nominalne.Normally this delay is nominal.

  2. Okno tolerancji poza kolejnością zostało wprowadzone, ponieważ znak wodny jest zmniejszany o rozmiar okna tolerancji.The out-of-order tolerance window introduced delay, because watermark is reduced by the size of the tolerance window.

  3. Okno opóźnionego przybycia zostało wprowadzone z opóźnieniem, ponieważ znak wodny jest zmniejszany o rozmiar okna tolerancji.The late arrival window introduced delay, because watermark is reduced by the size the tolerance window.

  4. Przesunięcie zegara przez węzeł przetwarzania generującego metrykę.Clock skew of the processing node generating the metric.

Istnieje wiele innych ograniczeń zasobów, które mogą spowodować spowolnienie potoku przesyłania strumieniowego.There are a number of other resource constraints that can cause the streaming pipeline to slow down. Metryka opóźnienia może wzrosnąć z powodu:The watermark delay metric can rise due to:

  1. Za mało zasobów przetwarzania w Stream Analytics, aby obsłużyć woluminy zdarzeń wejściowych.Not enough processing resources in Stream Analytics to handle the volume of input events. Aby skalować zasoby, zobacz Opis i Dostosowywanie jednostek przesyłania strumieniowego.To scale up resources, see Understand and adjust Streaming Units.

  2. Nie ma wystarczającej przepływności w ramach brokerów zdarzeń wejściowych, dlatego ograniczenia są ograniczone.Not enough throughput within the input event brokers, so they are throttled. Aby poznać możliwe rozwiązania, zobacz Automatyczne skalowanie jednostek przepływności na platformie Azure Event Hubs.For possible solutions, see Automatically scale up Azure Event Hubs throughput units.

  3. Nie zainicjowano obsługi ujścia danych wyjściowych za pomocą wystarczającej pojemności, dzięki czemu są one ograniczone.Output sinks are not provisioned with enough capacity, so they are throttled. Możliwe rozwiązania różnią się znacznie w zależności od wersji używanej usługi wyjściowej.The possible solutions vary widely based on the flavor of output service being used.

Częstotliwość zdarzeń wyjściowychOutput event frequency

Azure Stream Analytics używa postępu wodnego jako jedynego wyzwalacza do tworzenia zdarzeń wyjściowych.Azure Stream Analytics uses watermark progress as the only trigger to produce output events. Ponieważ znak wodny jest wyprowadzany z danych wejściowych, można go powtarzać podczas odzyskiwania po awarii, a także w przypadku ponownego przetwarzania przez użytkownika.Because the watermark is derived from input data, it is repeatable during failure recovery and also in user initiated reprocessing. W przypadku korzystania z agregacji oknaUsługa tworzy tylko dane wyjściowe na końcu systemu Windows.When using windowed aggregates, the service only produces outputs at the end of the windows. W niektórych przypadkach użytkownicy mogą chcieć zobaczyć częściowe agregaty wygenerowane w systemie Windows.In some cases, users may want to see partial aggregates generated from the windows. Częściowe agregacje nie są obecnie obsługiwane w Azure Stream Analytics.Partial aggregates are not supported currently in Azure Stream Analytics.

W innych rozwiązaniach przesyłania strumieniowego zdarzenia wyjściowe mogą być w różnych punktach wyzwalacza, w zależności od sytuacji zewnętrznych.In other streaming solutions, output events could be materialized at various trigger points, depending on external circumstances. Istnieje możliwość, że w niektórych rozwiązaniach zdarzenia wyjściowe dla danego przedziału czasu można generować wiele razy.It's possible in some solutions that the output events for a given time window could be generated multiple times. Ponieważ wartości wejściowe są rafinowane, zagregowane wyniki stają się dokładniejsze.As the input values are refined, the aggregate results become more accurate. Zdarzenia mogą być w pierwszej kolejności i skorygowane w miarę upływu czasu.Events could be speculated at first, and revised over time. Na przykład, gdy określone urządzenie jest w trybie offline z sieci, system może użyć szacowanej wartości.For example, when a certain device is offline from the network, an estimated value could be used by a system. Później to samo urządzenie przejdzie w tryb online do sieci.Later on, the same device comes online to the network. Następnie rzeczywiste dane zdarzenia mogą być uwzględnione w strumieniu wejściowym.Then the actual event data could be included in the input stream. Dane wyjściowe z przetwarzania tego przedziału czasu tworzą dokładniejsze dane wyjściowe.The output results from processing that time window produces more accurate output.

Zilustrowano przykład znaków wodnychIllustrated example of watermarks

Na poniższych ilustracjach przedstawiono, jak ma postępować w różnych sytuacjach.The following images illustrate how watermarks progress in different circumstances.

W tej tabeli przedstawiono przykładowe dane przedstawione poniżej.This table shows the example data that is charted below. Należy zauważyć, że czas zdarzenia i czas przybycia różnią się, czasami dopasowuje i czasami nie.Notice that the event time and the arrival time vary, sometimes matching and sometimes not.

Czas zdarzeniaEvent time Czas przybyciaArrival time DeviceIdDeviceId
12:0712:07 12:0712:07 device1device1
12:0812:08 12:0812:08 device2device2
12:1712:17 12:1112:11 device1device1
12:0812:08 12:1312:13 device3device3
12:1912:19 12:1612:16 device1device1
12:1212:12 12:1712:17 device3device3
12:1712:17 12:1812:18 device2device2
12:2012:20 12:1912:19 device2device2
12:1612:16 12:2112:21 device3device3
12:2312:23 12:2212:22 device2device2
12:2212:22 12:2412:24 device2device2
12:2112:21 12:2712:27 device3device3

Na tej ilustracji są używane następujące tolerancje:In this illustration, the following tolerances are used:

  • Okna wczesnego przybycia to 5 minutEarly arrival windows is 5 minutes
  • Późne przebycie okna to 5 minutLate arriving window is 5 minutes
  • Okno zmiany kolejności wynosi 2 minutyReorder window is 2 minutes
  1. Ilustracja przedstawiająca przechodzenie między następującymi zdarzeniami:Illustration of watermark progressing through these events:

    Ilustracja przedstawiająca Azure Stream Analytics znak wodny

    Znaczące procesy zilustrowane na poprzedniej ilustracji:Notable processes illustrated in the preceding graphic:

    1. Pierwsze zdarzenie (device1) i drugie zdarzenie (device2) mają wyrównane godziny i są przetwarzane bez korekt.The first event (device1), and second event (device2) have aligned times and are processed without adjustments. Znak wodny postępuje na każdym zdarzeniu.The watermark progresses on each event.

    2. Gdy trzecie zdarzenie (device1) jest przetwarzane, czas przybycia (12:11) poprzedza czas zdarzenia (12:17).When the third event (device1) is processed, the arrival time (12:11) precedes the event time (12:17). Zdarzenie zostało porzucone na początku 6 minut, więc zdarzenie jest porzucane z powodu 5-minutowej tolerancji przybycia na wczesny czas.The event arrived 6 minutes early, so the event is dropped due to the 5-minute early arrival tolerance.

      Ten znak wodny nie postępuje w tym przypadku wczesnego zdarzenia.The watermark doesn't progress in this case of an early event.

    3. Czwarte zdarzenie (device3) i piąte zdarzenie (device1) zostały wyrównane i są przetwarzane bez dostosowania.The fourth event (device3), and fifth event (device1) have aligned times and are processed without adjustment. Znak wodny postępuje na każdym zdarzeniu.The watermark progresses on each event.

    4. Po przetworzeniu szóstego zdarzenia (device3) godzina przybycia (12:17) i czas zdarzenia (12:12) są poniżej poziomu znaku wodnego.When the sixth event (device3) is processed, the arrival time (12:17) and the event time (12:12) is below the watermark level. Czas zdarzenia jest dostosowywany do poziomu znaku wodnego (12:17).The event time is adjusted to the water mark level (12:17).

    5. Po przetworzeniu dwunastego zdarzenia (device3) czas przybycia (12:27) wynosi 6 minut przed czasem zdarzenia (12:21).When the twelfth event (device3) is processed, the arrival time (12:27) is 6 minutes ahead of the event time (12:21). Zasady późnego przybycia są stosowane.The late arrival policy is applied. Czas zdarzenia jest dostosowywany (12:22), który znajduje się powyżej znaku wodnego (12:21), co oznacza, że dalsze korekty nie są stosowane.The event time is adjusted (12:22), which is above the watermark (12:21) so no further adjustment is applied.

  2. Druga ilustracja przedstawiająca znak wodny postępu bez zasad wczesnego przybycia:Second illustration of watermark progressing without an early arrival policy:

    Nie Azure Stream Analytics ilustracja przedstawiająca górny limit zasad

    W tym przykładzie nie są stosowane zasady wczesnego przybycia.In this example, no early arrival policy is applied. Nieprzestające zdarzenia, które docierają wczesnie, powodują znaczne zwiększenie wartości znaku wodnego.Outlier events that arrive early raise the watermark significantly. Zwróć uwagę, że trzecie zdarzenie (deviceId1 w czasie 12:11) nie zostanie porzucone w tym scenariuszu, a znak wodny zostanie podniesiony do 12:15.Notice the third event (deviceId1 at time 12:11) is not dropped in this scenario, and the watermark is raised to 12:15. Czwarty czas zdarzenia jest dostosowywany do przodu o 7 minut (12:08 do 12:15).The fourth event time is adjusted forward 7 minutes (12:08 to 12:15) as a result.

  3. Na ostatniej ilustracji są używane podstrumienie (za pośrednictwem DeviceId).In the final illustration, substreams are used (OVER the DeviceId). Wiele znaków wodnych jest śledzonych, jeden na strumień.Multiple watermarks are tracked, one per stream. W wyniku tego są mniej zdarzeń, które zostały odpowiednio dostosowane.There are fewer events with their times adjusted as a result.

    Ilustracja przedstawiająca znak wodny Azure Stream Analytics podstrumienia

Następne krokiNext steps