Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano kluczowe różnice między przetwarzaniem wsadowym i strumieniowym, dwiema różnymi semantykami przetwarzania danych używanymi na potrzeby obciążeń inżynieryjnych danych, w tym pozyskiwaniem, przekształcaniem i przetwarzaniem w czasie rzeczywistym.
Przesyłanie strumieniowe jest często kojarzone z niskimi opóźnieniami i ciągłym przetwarzaniem danych z magistrali komunikatów, takich jak Apache Kafka.
Jednak w usłudze Azure Databricks ma bardziej ekspansywną definicję. Podstawowy silnik potoków deklaratywnych Lakeflow (Apache Spark i Structured Streaming) ma ujednoliconą architekturę przetwarzania wsadowego i strumieniowego.
- Silnik może traktować źródła, takie jak magazyn obiektów w chmurze i Delta Lake jako źródła przesyłania strumieniowego w celu wydajnego przetwarzania przyrostowego.
- Przetwarzanie strumieniowe można uruchamiać zarówno w sposób wyzwalany, jak i ciągły, co zapewnia elastyczność w kontrolowaniu równowagi między kosztami a wydajnością obciążeń strumieniowych.
Poniżej przedstawiono podstawowe różnice semantyczne, które odróżniają przetwarzanie wsadowe i przetwarzanie strumieniowe, w tym ich zalety i wady oraz zagadnienia przy wyborze ich dla obciążeń roboczych.
Semantyka usługi Batch
W przypadku przetwarzania wsadowego silnik nie monitoruje, jakie dane są już przetwarzane w źródle. Wszystkie dane obecnie dostępne w źródle są przetwarzane w czasie przetwarzania. W praktyce źródło danych wsadowych jest zwykle partycjonowane logicznie, na przykład według dnia lub regionu, aby ograniczyć ponowne przetwarzanie danych.
Na przykład obliczenie średniej ceny sprzedaży pozycji, zagregowanej na poziomie godzinowym, dla zdarzenia sprzedaży uruchamianego przez firmę handlu elektronicznego można zaplanować jako przetwarzanie wsadowe w celu obliczenia średniej ceny sprzedaży co godzinę. W przypadku partii dane z poprzednich godzin są ponownie przetwarzane co godzinę, a wcześniej obliczone wyniki są zastępowane w celu odzwierciedlenia najnowszych wyników.
Semantyka strumieniowania
Podczas przetwarzania strumieniowego silnik śledzi, jakie dane są przetwarzane i przetwarza tylko nowe dane w kolejnych uruchomieniach. W powyższym przykładzie można zaplanować przetwarzanie strumieniowe zamiast przetwarzania wsadowego, aby obliczyć średnią cenę sprzedaży co godzinę. W przypadku przesyłania strumieniowego tylko nowe dane dodane do źródła od czasu ostatniego uruchomienia są przetwarzane. Nowo obliczone wyniki należy dołączyć do poprzednio obliczonych wyników, aby sprawdzić kompletne wyniki.
Usługa Batch a przesyłanie strumieniowe
W powyższym przykładzie przesyłanie strumieniowe jest lepsze niż przetwarzanie wsadowe, ponieważ nie przetwarza tych samych danych przetworzonych w poprzednich uruchomieniach. Jednak przetwarzanie strumieniowe staje się bardziej złożone w scenariuszach, takich jak nieuporządkowane dane i spóźniony przyjazd danych do źródła.
Przykładem danych o późnym przybyciu jest sytuacja, gdy pewne dane sprzedaży z pierwszej godziny nie docierają do źródła aż do drugiej godziny.
- W przypadku przetwarzania wsadowego dane późnego przybycia z pierwszej godziny zostaną przetworzone przy użyciu danych z drugiej godziny i istniejących danych z pierwszej godziny. Poprzednie wyniki z pierwszej godziny zostaną zastąpione i poprawione przy użyciu danych o opóźnionym przybyciu.
- W przetwarzaniu strumieniowym dane przychodzące z opóźnieniem z pierwszej godziny zostaną przetworzone bez uwzględniania innych danych z pierwszej godziny, które już zostały przetworzone. Logika przetwarzania musi przechowywać informacje o sumie i liczbie z obliczeń średniej pierwszej godziny, aby poprawnie zaktualizować poprzednie wyniki.
Te złożoności przesyłania strumieniowego są zwykle wprowadzane, gdy przetwarzanie jest stanowe, takie jak łączenia, agregacje i deduplikacje.
W przypadku bezstanowego przetwarzania przesyłania strumieniowego, takiego jak dodawanie nowych danych ze źródła, obsługa danych, które przybywają poza kolejnością i z opóźnieniem, jest mniej złożona, ponieważ mogą one być dodawane do poprzednich wyników w miarę ich przybywania ze źródła.
W poniższej tabeli przedstawiono zalety i wady przetwarzania wsadowego i przesyłania strumieniowego oraz różne funkcje produktów, które obsługują te dwa semantyki przetwarzania w usłudze Databricks Lakeflow.
Porcja | Przesyłanie strumieniowe | |
---|---|---|
Zalety |
|
|
Minusy |
|
|
Produkty inżynieryjne danych |
|
|
Rekomendacje
W poniższej tabeli przedstawiono zalecaną semantyka przetwarzania na podstawie cech obciążeń przetwarzania danych w każdej warstwie architektury medalonu.
Warstwa medalionu | Charakterystykę obciążenia | Rekomendacja |
---|---|---|
Brąz |
|
|
Srebro |
|
|
Złoto |
|
|