Udostępnij za pośrednictwem


Praca z łączeniami w usłudze Azure Databricks

Usługa Databricks obsługuje standardową składnię łączenia ANSI. W tym artykule opisano różnice między sprzężeniami z przetwarzaniem wsadowym i strumieniowym.

Uwaga

Usługa Databricks obsługuje również standardową składnię dla operatorów zestawu UNION, INTERSECTi EXCEPT. Zobacz Set operators (Ustawianie operatorów).

Różnice między łączeniami strumieniowymi a wsadowymi.

Sprzężenia w usłudze Azure Databricks są stanowe lub bezstanowe.

Wszystkie sprzężenia wsadowe to sprzężenia bezstanowe. Wyniki są przetwarzane natychmiast i odzwierciedlają dane w momencie uruchomienia zapytania. Za każdym razem, gdy zapytanie jest wykonywane, nowe wyniki są obliczane na podstawie określonych danych źródłowych. Zobacz Batch joins (Sprzężenia wsadowe).

Łączenia między dwoma źródłami danych strumieniowych są stanowe. W stanowych sprzężeniach usługa Azure Databricks śledzi informacje o źródłach danych, a wyniki i iteracyjnie aktualizują wyniki. Sprzężenia stanowe mogą zapewnić zaawansowane rozwiązania do przetwarzania danych online, ale mogą być trudne do skutecznego wdrożenia. Ma złożoną semantykę operacyjną w zależności od trybu wyjściowego, interwału wyzwalacza i znaku wodnego. Zobacz Sprzężenia strumienia.

Sprzężenia statyczne strumienia są bezstanowe, ale zapewniają dobrą opcję łączenia przyrostowego źródła danych (takiego jak tabela faktów) ze statycznym źródłem danych (np. wolno zmieniającym się tabelą wymiarową). Zamiast dołączać wszystkie rekordy z obu stron za każdym razem, gdy zapytanie jest wykonywane, tylko nowo odebrane rekordy ze źródła przesyłania strumieniowego są łączone z bieżącą wersją tabeli statycznej. Zobacz Sprzężenia statyczne strumienia.

Sprzężenia wsadowe

pl-PL: Usługa Azure Databricks obsługuje standardową składnię złączeń SQL, w tym złączenia wewnętrzne, zewnętrzne, półzłączenia, antyzłączenia i złączenia krzyżowe. Zobacz JOIN.

Uwaga

Usługa Databricks zaleca użycie zmaterializowanego widoku w celu optymalizacji obliczeń przyrostowych wyników sprzężenia wewnętrznego. Zobacz zmaterializowane widoki.

Łączenia strumień-strumień

Łączenie dwóch źródeł danych przesyłanych strumieniowo może stanowić znaczące wyzwania związane z zarządzaniem informacjami o stanie i rozumowaniem wyników obliczeń i danych wyjściowych. Przed wdrożeniem połączenia strumieniowego, firma Databricks zaleca opracowanie solidnego zrozumienia semantyki operacyjnej dla strumieniowania stanowego, w tym wpływu znaków wodnych na zarządzanie stanem. Odwiedź następujące artykuły:

Usługa Databricks zaleca określenie znaków wodnych dla obu stron wszystkich sprzężeń strumieniowo-parowych. Obsługiwane są następujące typy sprzężenia:

  • Sprzężenia wewnętrzne
  • Lewe sprzężenia zewnętrzne
  • Prawe sprzężenia zewnętrzne
  • Pełne sprzężenia zewnętrzne
  • Lewe sprzężenia częściowe

Zobacz dokumentację dotyczące strukturalnego przesyłania strumieniowego Apache Spark na temat łączenia strumieni i pary.

Statyczne połączenia strumieniowe

Uwaga

Opisane zachowanie w przypadku sprzężeń statycznych strumieniowych zakłada, że dane statyczne są przechowywane przy użyciu usługi Delta Lake.

Strumieniowe sprzężenie statyczne łączy najnowszą prawidłową wersję tabeli Delta (dane statyczne) z strumieniem danych za pomocą bezstanowego połączenia.

Gdy usługa Azure Databricks przetwarza mikropartie danych podczas strumieniowego sprzężenia statycznego, najnowsza prawidłowa wersja danych ze statycznej tabeli Delta łączy się z rekordami obecnymi w bieżącej mikropartii. Ponieważ łączenie jest bezstanowe, nie trzeba konfigurować znakowania znaczników i można przetwarzać wyniki z małym opóźnieniem. Dane w statycznej tabeli delty używanej w łączeniu powinny się wolno zmieniać.

W poniższym przykładzie pokazano ten wzorzec:

streamingDF = spark.readStream.table("orders")
staticDF = spark.read.table("customers")

query = (streamingDF
  .join(staticDF, streamingDF.customer_id==staticDF.id, "inner")
  .writeStream
  .option("checkpointLocation", checkpoint_path)
  .table("orders_with_customer_info")
)

Wskazówki dotyczące dołączania do usługi Azure Databricks

Platforma Apache Spark obsługuje określanie wskazówek sprzężenia dla sprzężeń zakresu i sprzężeń niesymetrycznych. Wskazówki dotyczące niesymetrycznych sprzężeń nie są konieczne, ponieważ usługa Azure Databricks automatycznie optymalizuje te sprzężenia. Zobacz wskazówki

Wskazówki dotyczące sprzężeń zakresu mogą być przydatne, jeśli wydajność sprzężenia jest niska i wykonujesz sprzężenia z nierównościami. Przykłady obejmują łączenie w obrębie zakresów sygnatur czasowych lub zakresów identyfikatorów klastrowania. Zobacz Optymalizacja sprzężenia zakresu i Optymalizacja wydajności sprzężenia w usłudze Azure Databricks.