Udostępnij za pośrednictwem


PySpark w usłudze Azure Databricks

Usługa Azure Databricks jest oparta na platformie Apache Spark, ujednoliconym aucie analitycznym na potrzeby danych big data i uczenia maszynowego. Narzędzie PySpark ułatwia interfejs z platformą Apache Spark przy użyciu języka programowania Python, który jest elastycznym językiem, który jest łatwy do nauki, implementowania i konserwacji. Udostępnia również wiele opcji wizualizacji danych w usłudze Databricks. PySpark łączy możliwości języków Python i Apache Spark.

Ten artykuł zawiera omówienie podstaw programu PySpark w usłudze Databricks.

Wprowadzenie do pojęć związanych z platformą Spark

Ważne jest, aby zrozumieć kluczowe pojęcia dotyczące platformy Apache Spark przed rozpoczęciem korzystania z rozwiązania PySpark.

Ramki danych

Ramki danych to obiekty podstawowe na platformie Apache Spark. Ramka danych to zestaw danych podzielony na nazwę columns. Możesz myśleć o ramce danych jak o arkuszu kalkulacyjnym lub tableSQL, która jest dwuwymiarową strukturą danych składającą się z serii rekordów (podobnych do wierszy w table) i columns różnych typów. Ramki danych zapewniają rozbudowaną set funkcji (na przykład selectcolumns, filtrowania, joini agregacji), które umożliwiają wydajne wykonywanie typowych zadań manipulowania danymi i analizowania.

Oto niektóre ważne elementy ramki danych:

  • Schema: schema definiuje nazwy column i typy ramki danych. Formaty danych mają różną semantykę w odniesieniu do schema, jeśli chodzi o definicję i egzekwowanie. Niektóre źródła danych udostępniają schema informacje, podczas gdy inne polegają na ręcznej definicji schema lub zezwalają na wnioskowanie schema. Użytkownicy mogą definiować schematy ręcznie lub schematy mogą być odczytywane ze źródła danych.
  • Wiersze: Platforma Spark reprezentuje rekordy w ramce danych jako Row obiekty. Chociaż podstawowe formaty danych, takie jak Delta Lake, używają columns do przechowywania danych, Spark optymalizuje buforowanie i sortowanie danych przy użyciu wierszy.
  • Columns: Columns na platformie Spark są podobne do columns w arkuszu kalkulacyjnym i mogą reprezentować prosty typ, taki jak ciąg lub liczba całkowita, ale także złożone typy, takie jak tablica, mapa lub wartość null. Możesz pisać zapytania, które select, przetwarzają lub removecolumns ze źródła danych. Możliwe źródła danych obejmują tables, views, pliki lub inne ramki danych. Columns nigdy nie są usuwane z zestawu danych lub ramki danych, są one po prostu pomijane z wyników za pośrednictwem .drop przekształceń lub pominięcia w instrukcjach select.

Przetwarzanie danych

Platforma Apache Spark używa leniwej oceny do przetwarzania przekształceń i akcji zdefiniowanych za pomocą ramek danych. Te pojęcia mają podstawowe znaczenie dla zrozumienia przetwarzania danych za pomocą platformy Spark.

Przekształcenia: na platformie Spark wyrażasz logikę przetwarzania jako przekształcenia, które są instrukcjami dotyczącymi ładowania i manipulowania danymi przy użyciu ramek danych. Typowe przekształcenia obejmują odczytywanie danych, sprzężeń, agregacji i rzutowanie typów. Aby uzyskać informacje na temat przekształceń w usłudze Azure Databricks, zobacz Przekształcanie danych.

Ocena z opóźnieniem: platforma Spark optymalizuje przetwarzanie danych, identyfikując najbardziej wydajny plan fizyczny do oceny logiki określonej przez przekształcenia. Jednak platforma Spark nie działa na przekształceniach do momentu wywołania akcji. Zamiast oceniać poszczególne przekształcenia w określonej dokładnie kolejności, platforma Spark czeka na wyzwolenie obliczeń na wszystkich przekształceniach. Jest to nazywane leniwą oceną lub leniwym ładowaniem, które umożliwia łączenie wielu operacji, ponieważ platforma Spark obsługuje ich wykonywanie w sposób odroczony, a nie natychmiast wykonując je, gdy są zdefiniowane.

Uwaga

Leniwe obliczenia oznaczają, że ramki danych przechowują zapytania logiczne jako set instrukcji względem źródła danych, zamiast przechowywać wynik w pamięci. Różni się to znacząco od chętnego wykonywania, czyli modelu używanego przez ramki danych biblioteki pandas.

Akcje: akcje instruują platformę Spark, aby obliczała wynik z serii przekształceń na co najmniej jednej ramce danych. Operacje akcji zwracają wartość i mogą być dowolnego z następujących elementów:

  • Akcje dotyczące danych wyjściowych w konsoli lub edytorze, takich jak display lub show
  • Akcje do zbierania danych (zwraca Row obiektów), takich jak take(n), i lub firsthead
  • Akcje zapisu w źródłach danych, takie jak saveAsTable
  • Agregacje wyzwalające obliczenia, takie jak count

Ważne

W potokach danych produkcyjnych zapisywanie danych jest zwykle jedyną akcją, która powinna być obecna. Wszystkie inne akcje przerywają optymalizację zapytań i mogą prowadzić do wąskich gardeł.

Co to znaczy, że ramki danych są niezmienne?

Ramki danych to kolekcja przekształceń i akcji zdefiniowanych względem co najmniej jednego źródła danych, ale ostatecznie platforma Apache Spark rozwiązuje zapytania z powrotem do oryginalnych źródeł danych, więc same dane nie są zmieniane i nie są zmieniane żadne ramki danych. Innymi słowy, ramki danych są niezmienne. W związku z tym po wykonaniu przekształceń zostanie zwrócona nowa ramka danych, która musi zostać zapisana w zmiennej w celu uzyskania dostępu do niej w kolejnych operacjach. Jeśli chcesz ocenić pośredni krok transformacji, wywołaj akcję.

Interfejsy API i biblioteki

Podobnie jak w przypadku wszystkich interfejsów API platformy Spark, narzędzie PySpark jest wyposażone w wiele interfejsów API i bibliotek, które umożliwiają i obsługują zaawansowane funkcje, w tym:

  • Przetwarzanie danych strukturalnych za pomocą zapytań relacyjnych za pomocą platformy Spark SQL i ramek danych. Usługa Spark SQL umożliwia mieszanie zapytań SQL z programami platformy Spark. Dzięki ramce danych platformy Spark można wydajnie odczytywać, zapisywać, przekształcać i analizować dane przy użyciu języków Python i SQL, co oznacza, że zawsze wykorzystujesz pełną moc platformy Spark. Zobacz Wprowadzenie do programu PySpark.
  • Skalowalne przetwarzanie strumieni za pomocą przesyłania strumieniowego ze strukturą. Obliczenia przesyłane strumieniowo można wyrazić w taki sam sposób, jak wyrażanie obliczeń wsadowych na danych statycznych, a aparat Spark SQL uruchamia je przyrostowo i stale, gdy dane przesyłane strumieniowo nadal docierają. Zobacz Omówienie przesyłania strumieniowego ze strukturą.
  • Struktury danych i narzędzia do analizy danych biblioteki Pandas, które działają na platformie Apache Spark przy użyciu interfejsu API biblioteki Pandas na platformie Spark. Interfejs API biblioteki Pandas na platformie Spark umożliwia skalowanie obciążenia biblioteki Pandas do dowolnego rozmiaru przez uruchomienie go rozproszonego między wieloma węzłami z pojedynczą bazą kodu, która współpracuje z biblioteką pandas (testami, mniejszymi zestawami danych) i platformą Spark (produkcyjnymi, rozproszonymi zestawami danych). Zobacz Omówienie interfejsu API biblioteki Pandas na platformie Spark.
  • Algorytmy uczenia maszynowego z usługą Machine Learning (MLLib). MLlib to skalowalna biblioteka uczenia maszynowego oparta na platformie Spark, która zapewnia jednolite set interfejsów API, które ułatwiają użytkownikom tworzenie i dostrajanie praktycznych potoków uczenia maszynowego. Zobacz Omówienie biblioteki usługi Machine Learning.
  • Grafy i obliczenia równoległe grafu za pomocą programu GraphX. Program GraphX wprowadza nowy multigraf skierowany z właściwościami dołączonymi do każdego wierzchołka i krawędzi oraz uwidacznia operatory obliczeniowe grafu, algorytmy i konstruktory, aby uprościć zadania analizy grafu. Zobacz GraphX Overview (Omówienie programu GraphX).

Samouczki platformy Spark

Aby zapoznać się z przykładami użycia rozwiązania PySpark w usłudze Databricks, zobacz następujące artykuły:

Dokumentacja platformy Apache Spark zawiera również przewodniki Szybki start i przewodniki dotyczące nauki platformy Spark, w tym:

Dokumentacja rozwiązania PySpark

Usługa Azure Databricks obsługuje własną wersję interfejsów API PySpark i odpowiednie odwołania, które można znaleźć w poniższych sekcjach: