Spark SQL, DataFrames i Datasets Guide

Spark SQL to moduł Sparka do przetwarzania danych strukturalnych. W przeciwieństwie do podstawowego API Spark RDD, interfejsy udostępniane przez Spark SQL dostarczają Spark więcej informacji o strukturze zarówno danych, jak i wykonywanych obliczeń. Wewnętrznie, Spark SQL wykorzystuje te dodatkowe informacje do wykonywania dodatkowych optymalizacji. Istnieje kilka sposobów interakcji ze Spark SQL, w tym SQL i Dataset API. Podczas obliczania wyniku, używany jest ten sam silnik wykonawczy, niezależnie od tego, jakiego API/języka używasz do wyrażania obliczeń. Ta unifikacja oznacza, że programiści mogą łatwo przełączać się pomiędzy różnymi API w zależności od tego, które z nich zapewnia najbardziej naturalny sposób wyrażenia danej transformacji.

Wszystkie przykłady na tej stronie wykorzystują przykładowe dane zawarte w dystrybucji Spark i mogą być uruchamiane w powłoce spark-shell, pyspark lub sparkR.

SQL

Jednym z zastosowań Spark SQL jest wykonywanie zapytań SQL.Spark SQL może być również używany do odczytywania danych z istniejącej instalacji Hive. Więcej informacji na temat konfigurowania tej funkcji znajduje się w sekcji Tabele Hive. Kiedy uruchamiamy SQL z innego języka programowania, wyniki zostaną zwrócone jako Dataset/DataFrame.Można również współdziałać z interfejsem SQL za pomocą wiersza poleceń lub poprzez JDBC/ODBC.

Datasets and DataFrames

Dataset jest rozproszoną kolekcją danych.Dataset jest nowym interfejsem dodanym w Spark 1.6, który zapewnia korzyści z RDD (silne typowanie, możliwość użycia potężnych funkcji lambda) z korzyściami zoptymalizowanego silnika wykonawczego Spark SQL. Dataset może być skonstruowany z obiektów JVM i następnie manipulowany przy użyciu funkcjonalnych transformacji (map, flatMap, filter, itd.).Dataset API jest dostępny w Scali i Javie. Python nie posiada wsparcia dla Dataset API. Jednak ze względu na dynamiczną naturę Pythona wiele zalet Dataset API jest już dostępnych (np. można uzyskać dostęp do pola wiersza według nazwy w sposób naturalnyrow.columnName). W przypadku R jest podobnie.

DataFrame jest zbiorem danych zorganizowanym w nazwane kolumny. Jest to koncepcyjnie odpowiednik tabeli w relacyjnej bazie danych lub ramki danych w R/Pythonie, ale z bogatymi optymalizacjami pod maską. DataFrames mogą być tworzone z szerokiej gamy źródeł takich jak: pliki danych strukturalnych, tabele w Hive, zewnętrzne bazy danych lub istniejące RDD.API DataFrame jest dostępne w Scali, Javie, Pythonie i R.W Scali i Javie DataFrame jest reprezentowane przez Dataset składający się z Rows.W Scala API, DataFrame jest po prostu aliasem typu Dataset.Podczas gdy w Java API, użytkownicy muszą używać Dataset<Row> do reprezentowania DataFrame.

W całym tym dokumencie, będziemy często odnosić się do Scala/Java Datasets of Rows jako DataFrames.

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.