Udostępnij za pośrednictwem


Wprowadzenie do trybu czasu rzeczywistego

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

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:

  1. W obszarze roboczym usługi Azure Databricks kliknij pozycję Compute na pasku bocznym.

  2. Kliknij pozycję Utwórz obliczenia.

  3. Wprowadź nazwę.

  4. Wybierz wersję Databricks Runtime 17.1 lub wyższą.

  5. Wyczyść Photon acceleration (tryb czasu rzeczywistego nie obsługuje funkcji Photon).

  6. Wyczyść pole Włącz skalowanie automatyczne (tryb czasu rzeczywistego wymaga stałego rozmiaru klastra).

  7. W obszarze Zaawansowana wydajność wyczyść pole Użyj wystąpień typu spot (wystąpienia typu spot mogą powodować przerwy).

  8. Kliknij pozycję Opcje zaawansowane , aby rozwinąć dodatkowe ustawienia.

  9. W obszarze Tryb dostępu wybierz pozycję Dedykowane (dawniej: Pojedynczy użytkownik).

  10. W obszarze Konfiguracja platformy Spark dodaj następującą konfigurację:

    spark.databricks.streaming.realTimeMode.enabled true
    
  11. Kliknij 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:

  1. Kliknij pozycję Nowy na pasku bocznym, a następnie kliknij Notatnik.
  2. W menu rozwijanym obliczenia wybierz obliczenia utworzone w kroku 1.
  3. 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 display do 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: