Notatka
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.
Ważna
Ta funkcja jest dostępna w publicznej wersji testowej.
Tryb czasu rzeczywistego umożliwia przesyłanie strumieniowe o bardzo małych opóźnieniach z opóźnieniem końcowym nawet o pięciu milisekundach, co czyni go idealnym rozwiązaniem dla obciążeń operacyjnych, takich jak wykrywanie oszustw i personalizacja w czasie rzeczywistym. Ten samouczek przeprowadzi Cię przez proces konfigurowania pierwszego zapytania przesyłania strumieniowego w czasie rzeczywistym przy użyciu prostego przykładu.
Aby uzyskać informacje koncepcyjne dotyczące trybu czasu rzeczywistego, kiedy należy go używać i obsługiwanych funkcji, zobacz Tryb czasu rzeczywistego w funkcji przesyłania strumieniowego ze strukturą.
Wymagania
- Masz uprawnienia do tworzenia klasycznych obliczeń.
- Środowisko Databricks Runtime w wersji 17.1 lub nowszej (wymagane do korzystania z funkcji
displayw trybie czasu rzeczywistego).
Uwaga / Notatka
Jeśli nie masz uprawnień do tworzenia klasycznych zasobów obliczeniowych, skontaktuj się z administratorem obszaru roboczego, aby utworzył dla Ciebie klaster trybu w czasie rzeczywistym, używając konfiguracji z kroku 1.
Krok 1. Tworzenie klasycznych obliczeń dla trybu czasu rzeczywistego
Tryb czasu rzeczywistego wymaga określonej klasycznej konfiguracji obliczeniowej w celu osiągnięcia bardzo małych opóźnień. Te ustawienia zapewniają, że zadania są uruchamiane jednocześnie na wszystkich etapach, a dane są przetwarzane w sposób ciągły w miarę ich nadejścia, a nie w partiach.
Aby utworzyć prawidłowo skonfigurowane klasyczne obliczenia:
W obszarze roboczym usługi Azure Databricks kliknij pozycję Compute na pasku bocznym.
Kliknij pozycję Utwórz obliczenia.
Wprowadź nazwę.
Wybierz wersję Databricks Runtime 17.1 lub wyższą.
Wyczyść Photon acceleration (tryb czasu rzeczywistego nie obsługuje funkcji Photon).
Wyczyść pole Włącz skalowanie automatyczne (tryb czasu rzeczywistego wymaga stałego rozmiaru klastra).
W obszarze Zaawansowana wydajność wyczyść pole Użyj wystąpień typu spot (wystąpienia typu spot mogą powodować przerwy).
Kliknij pozycję Opcje zaawansowane , aby rozwinąć dodatkowe ustawienia.
W obszarze Tryb dostępu wybierz pozycję Dedykowane (dawniej: Pojedynczy użytkownik).
W obszarze Konfiguracja platformy Spark dodaj następującą konfigurację:
spark.databricks.streaming.realTimeMode.enabled trueKliknij pozycję Utwórz obliczenia.
Krok 2. Tworzenie notesu
Notatniki oferują interaktywne środowisko do tworzenia i testowania zapytań przesyłania strumieniowego. Ten notes służy do pisania zapytania w czasie rzeczywistym i ciągłego aktualizowania wyników.
Aby utworzyć notatnik:
- Kliknij pozycję Nowy na pasku bocznym, a następnie kliknij Notatnik.
- W menu rozwijanym obliczenia wybierz obliczenia utworzone w kroku 1.
- Wybierz język Python lub Scala jako język domyślny.
Krok 3. Uruchamianie zapytania w trybie czasu rzeczywistego
Skopiuj i wklej następujący kod do komórki notesu i uruchom go. W tym przykładzie użyto źródła szybkości, które generuje wiersze z określoną szybkością i wyświetla wyniki w czasie rzeczywistym.
Uwaga / Notatka
Funkcja display z wyzwalaczem realTime jest dostępna w środowisku Databricks Runtime 17.1 lub nowszym.
Python
inputDF = (
spark
.readStream
.format("rate")
.option("numPartitions", 2)
.option("rowsPerSecond", 1)
.load()
)
display(inputDF, realTime="5 minutes", outputMode="update")
Scala
import org.apache.spark.sql.streaming.Trigger
import org.apache.spark.sql.streaming.OutputMode
val inputDF = spark
.readStream
.format("rate")
.option("numPartitions", 2)
.option("rowsPerSecond", 1)
.load()
display(inputDF, trigger=Trigger.RealTime(), outputMode=OutputMode.Update())
Po uruchomieniu kodu zostanie wyświetlona tabela aktualizującą się w czasie rzeczywistym w miarę generowania nowych wierszy. W tabeli zostanie wyświetlona kolumna timestamp i kolumna value , która zwiększa się z każdym wierszem.
Omówienie kodu
Powyższy kod przedstawia podstawowe składniki zapytania przesyłania strumieniowego w czasie rzeczywistym. W poniższych tabelach wyjaśniono kluczowe parametry i elementy, które kontrolują:
Python
| Parameter | Opis |
|---|---|
format("rate") |
Używa źródła rate, wbudowanego źródła, które generuje wiersze z konfigurowalną szybkością. Jest to przydatne do testowania bez zależności zewnętrznych. |
numPartitions |
Ustawia liczbę partycji dla wygenerowanych danych. |
rowsPerSecond |
Określa liczbę wierszy generowanych na sekundę. |
realTime="5 minutes" |
Włącza tryb czasu rzeczywistego. Częstotliwość określa, jak często postępują punkty kontrolne zapytania. Dłuższe interwały oznaczają mniej częste punkty kontrolne, ale potencjalnie dłuższe czasy odzyskiwania po awariach. |
outputMode="update" |
Tryb czasu rzeczywistego wymaga trybu aktualizacji danych wyjściowych. |
Scala
| Parameter | Opis |
|---|---|
format("rate") |
Korzysta ze źródła szybkości, wbudowanego źródła, które generuje wiersze z konfigurowalną szybkością. Jest to przydatne do testowania bez zależności zewnętrznych. |
numPartitions |
Ustawia liczbę partycji dla wygenerowanych danych. |
rowsPerSecond |
Określa liczbę wierszy generowanych na sekundę. |
Trigger.RealTime() |
Włącza tryb czasu rzeczywistego z domyślnym interwałem punktu kontrolnego. Można również określić interwał, na przykład Trigger.RealTime("5 minutes"). |
OutputMode.Update() |
Tryb czasu rzeczywistego wymaga trybu aktualizacji danych wyjściowych. |
Co widzisz
Po uruchomieniu zapytania funkcja tworzy tabelę, display która jest aktualizowana w czasie rzeczywistym, gdy źródło stawki generuje nowe wiersze. Każdy wiersz zawiera:
- sygnatura czasowa: czas wygenerowania wiersza przez źródło stawki
- wartość: monotonicznie zwiększający licznik, który zwiększa się z każdym nowym wierszem
Tabela jest aktualizowana w sposób ciągły z minimalnym opóźnieniem, co pokazuje, jak tryb czasu rzeczywistego przetwarza dane natychmiast po udostępnieniu. Jest to podstawowa zaleta trybu czasu rzeczywistego — możliwość natychmiastowego wyświetlania i pracy z danymi, a nie oczekiwania na przetwarzanie wsadowe.
Zdobyta wiedzę
Pomyślnie skonfigurowałeś i uruchomiłeś swoje pierwsze zapytanie strumieniowe w trybie rzeczywistym. Teraz wiesz, jak:
- Skonfiguruj klasyczne obliczenia przy użyciu wymaganych ustawień trybu czasu rzeczywistego (dedykowany klaster, wyłączony photon, wyłączone skalowanie automatyczne, konfiguracja platformy Spark)
- Włącz przetwarzanie w czasie rzeczywistym przy użyciu wyzwalacza
realTime - Użyj funkcji
displaydo interaktywnego programowania i testowania - Sprawdź, czy zapytanie działa w trybie czasu rzeczywistego, obserwując ciągłe aktualizacje
Możesz przystąpić do tworzenia potoków produkcyjnych w czasie rzeczywistym przy użyciu platformy Kafka, Kinesis i innych obsługiwanych źródeł. Aby dowiedzieć się więcej na temat przesyłania strumieniowego ze strukturą, zobacz Pojęcia dotyczące przesyłania strumieniowego ze strukturą.
Następne kroki
Teraz, po uruchomieniu pierwszego zapytania w czasie rzeczywistym, zapoznaj się z tymi zasobami, aby tworzyć produkcyjne aplikacje przesyłania strumieniowego:
- Przykłady trybu w czasie rzeczywistym — przykłady kodu roboczego dla źródeł i ujściów platformy Kafka, zapytań stanowych, agregacji i ujść niestandardowych
- Dokumentacja trybu w czasie rzeczywistym — informacje o określaniu rozmiaru klastra, obsługiwanych operatorach, monitorowaniu i ograniczeniach funkcji
- Aplikacje streamingowe z zarządzaniem stanem — dodaj zarządzanie stanem do zapytań streamingowych na potrzeby deduplikacji, agregacji i okienowania
-
Zaawansowane zarządzanie stanem — użyj
transformWithStatedo niestandardowego przetwarzania stanowego z czasem wygaśnięcia (TTL) i złożoną logiką