Wprowadzenie do Spark Dataset

Zestaw danych jest strukturą danych w Spark SQL, która zapewnia bezpieczeństwo typu kompilacji, obiektowy interfejs oraz optymalizację Spark SQL.

Koncepcyjnie jest to struktura tabelaryczna w pamięci, mająca wiersze i kolumny, które są rozmieszczone w wielu węzłach, takich jak ramka danych.

Jest to rozszerzenie Dataframe. Główną różnicą między zestawem danych a ramką danych jest to, że zestawy danych są silnie typowane.

(Zestaw danych) = (Rama danych + Bezpieczeństwo typu kompilacji)

Zestaw danych został wydany w Spark 1.6 jako eksperymentalny interfejs API. Zarówno ramka danych, jak i zestaw danych są ujednolicone w wersji Spark 2.0, a ramka danych staje się aliasem zestawu danych (wiersz).

Ramka danych = zestaw danych (wiersz)

Dlaczego potrzebujemy Spark Dataset?

Aby dobrze zrozumieć zbiór danych, musimy zacząć od nieco historii iskier i jej ewolucji.

RDD jest rdzeniem Spark. Zainspirowany przez SQL i dla ułatwienia, Dataframe został stworzony na szczycie RDD. Ramka danych jest odpowiednikiem tabeli w relacyjnej bazie danych lub DataFrame w Pythonie.

RDD zapewnia bezpieczeństwo typu kompilacji w czasie kompilacji, ale brak jest automatycznej optymalizacji w RDD.

Ramka danych zapewnia automatyczną optymalizację, ale brakuje jej bezpieczeństwa typu kompilacji.

Zestaw danych jest dodawany jako rozszerzenie ramki danych. Zestaw danych łączy funkcje zarówno RDD (tj. Bezpieczeństwo typu kompilacji), jak i Dataframe (tj. Automatyczna optymalizacja Spark SQL).

(RDD (Spark 1.0)) -> (Dataframe (Spark1.3)) -> (Dataset (Spark1.6))

Ponieważ zestaw danych ma bezpieczeństwo podczas kompilacji, dlatego jest obsługiwany tylko w języku kompilowanym (Java i Scala), ale nie w języku interpretowanym (R & Python). Ale interfejs API Spark Dataframe jest dostępny we wszystkich czterech językach (Java, Scala, Python i R) obsługiwanych przez Spark.

Język obsługiwany przez SparkInterfejs API ramki danychInterfejs API zestawu danych
Język kompilowany (Java i Scala)TAKTAK
Język interpretowany (R & Python)TAKNIE

Jak utworzyć zestaw danych Spark?

Istnieje wiele sposobów tworzenia zestawu danych w oparciu o przypadek użycia

1. Najpierw utwórz SparkSession

SparkSession to pojedynczy punkt wejścia do aplikacji Spark, która umożliwia interakcję z podstawową funkcjonalnością Spark i programowanie Spark za pomocą interfejsów API DataFrame i Dataset.

val spark = SparkSession
.builder()
.appName("SparkDatasetExample")
.enableHiveSupport()
.getOrCreate()

  • Aby utworzyć zestaw danych przy użyciu podstawowej struktury danych, takiej jak Zakres, Sekwencja, Lista itp.:

Korzystanie z zakresu

Używanie sekwencji

Korzystanie z listy

  • Aby utworzyć zestaw danych przy użyciu sekwencji klas spraw, wywołując metodę .toDS ():

  • Aby utworzyć zestaw danych z RDD przy użyciu .toDS ():

  • Aby utworzyć zestaw danych z ramki danych za pomocą klasy przypadków:

  • Aby utworzyć zestaw danych z ramki danych za pomocą Tuples:

2. Operacje na zestawie danych Spark

  1. Przykład liczby słów

  1. Konwertuj Spark Dataset na Dataframe

Możemy również przekonwertować Spark Dataset na Datafame i korzystać z interfejsów API Dataframe, jak poniżej:

Funkcje Spark Dataset

  1. Wpisz Bezpieczeństwo

Zestaw danych zapewnia bezpieczeństwo typu kompilacji. Oznacza to, że składnia, a także błędy analizy aplikacji, zostaną sprawdzone podczas kompilacji przed uruchomieniem.

  1. Niezmienność

Zestaw danych jest również niezmienny, jak RDD i Dataframe. Oznacza to, że nie możemy zmienić utworzonego zestawu danych. Za każdym razem, gdy tworzony jest nowy zestaw danych, gdy do zbioru danych jest stosowana transformacja.

  1. Schemat

Zestaw danych to struktura tabelaryczna w pamięci, która ma wiersze i nazwane kolumny.

  1. Wydajność i optymalizacja

Podobnie jak Dataframe, zestaw danych wykorzystuje również Catalyst Optimization do generowania zoptymalizowanego logicznego i fizycznego planu zapytań.

  1. Język programowania

Interfejs API zestawu danych jest obecny tylko w Javie i Scali, które są skompilowanymi językami, ale nie w Pythonie, który jest językiem interpretowanym.

  1. Leniwa ocena

Podobnie jak RDD i Dataframe, zestaw danych wykonuje również leniwą ocenę. Oznacza to, że obliczenia mają miejsce tylko wtedy, gdy wykonywane jest działanie. Spark tworzy tylko plany podczas fazy transformacji.

  1. Serializacja i wyrzucanie elementów bezużytecznych

Zestaw danych Spark nie używa standardowych serializatorów (serializacja Kryo lub Java). Zamiast tego wykorzystuje szybkie enkodery Tungsten w pamięci, które rozumieją wewnętrzną strukturę danych i mogą skutecznie przekształcać obiekty w wewnętrzną pamięć binarną. Wykorzystuje szeregowanie danych poza stertą za pomocą enkodera Tungsten, a zatem nie ma potrzeby zbierania śmieci.

Wniosek

Zestaw danych jest najlepszym z RDD i Dataframe. RDD zapewnia bezpieczeństwo typu kompilacji w czasie kompilacji, ale nie ma automatycznej optymalizacji. Ramka danych zapewnia automatyczną optymalizację, ale brakuje jej bezpieczeństwa typu kompilacji. Zestaw danych zapewnia zarówno bezpieczeństwo typu kompilacji, jak i automatyczną optymalizację. Dlatego zestaw danych jest najlepszym wyborem dla programistów Spark korzystających z Java lub Scali.

Polecane artykuły

To jest przewodnik po Spark Dataset. W tym rozdziale omawiamy sposób tworzenia zestawu danych Spark na wiele sposobów za pomocą przykładów i funkcji. Możesz także zapoznać się z następującymi artykułami, aby dowiedzieć się więcej -

  1. Polecenia Spark Shell
  2. Pytania do wywiadu Spark
  3. Kariera w Spark
  4. Spark Streaming
  5. Różne operacje związane z krotkami
  6. Spark SQL Dataframe
  7. Rodzaje złączeń w Spark SQL (przykłady)
  8. Przewodnik po liście poleceń powłoki Unix
  9. Top 6 komponentów Spark

Kategoria: