Spark SQL - szybki przewodnik

Branże intensywnie używają Hadoop do analizowania swoich zestawów danych. Powodem jest to, że platforma Hadoop jest oparta na prostym modelu programowania (MapReduce) i umożliwia rozwiązanie obliczeniowe, które jest skalowalne, elastyczne, odporne na błędy i opłacalne. Tutaj głównym problemem jest utrzymanie szybkości przetwarzania dużych zbiorów danych pod względem czasu oczekiwania między zapytaniami i czasu oczekiwania na uruchomienie programu.

Spark został wprowadzony przez Apache Software Foundation w celu przyspieszenia procesu tworzenia oprogramowania obliczeniowego Hadoop.

Wbrew powszechnemu przekonaniu Spark is not a modified version of Hadoopi tak naprawdę nie jest zależny od Hadoop, ponieważ ma własne zarządzanie klastrem. Hadoop to tylko jeden ze sposobów implementacji Spark.

Spark używa Hadoop na dwa sposoby - jeden to storage a po drugie processing. Ponieważ Spark ma własne obliczenia zarządzania klastrem, używa Hadoop tylko do przechowywania.

Apache Spark

Apache Spark to błyskawiczna technologia przetwarzania klastrów, zaprojektowana do szybkich obliczeń. Opiera się na Hadoop MapReduce i rozszerza model MapReduce, aby efektywnie używać go do większej liczby typów obliczeń, w tym zapytań interaktywnych i przetwarzania strumieni. Główną cechą Sparka jest jegoin-memory cluster computing co zwiększa szybkość przetwarzania aplikacji.

Spark jest przeznaczony do obsługi szerokiego zakresu obciążeń, takich jak aplikacje wsadowe, algorytmy iteracyjne, zapytania interaktywne i przesyłanie strumieniowe. Oprócz obsługi wszystkich tych obciążeń w odpowiednim systemie, zmniejsza obciążenie zarządzania związane z utrzymywaniem oddzielnych narzędzi.

Ewolucja Apache Spark

Spark jest jednym z podprojektów Hadoop opracowanych w 2009 roku w AMPLab UC Berkeley przez Matei Zaharia. Był to Open Sourced w 2010 roku na licencji BSD. Został przekazany fundacji oprogramowania Apache w 2013 r., A teraz Apache Spark stał się projektem najwyższego poziomu Apache od lutego 2014 r.

Funkcje Apache Spark

Apache Spark ma następujące funkcje.

  • Speed- Spark pomaga uruchomić aplikację w klastrze Hadoop, do 100 razy szybciej w pamięci i 10 razy szybciej podczas pracy na dysku. Jest to możliwe dzięki zmniejszeniu liczby operacji odczytu / zapisu na dysku. Przechowuje w pamięci pośrednie dane przetwarzania.

  • Supports multiple languages- Spark udostępnia wbudowane interfejsy API w Javie, Scali lub Pythonie. Dlatego możesz pisać aplikacje w różnych językach. Spark zawiera 80 operatorów wysokiego poziomu do interaktywnego wykonywania zapytań.

  • Advanced Analytics- Spark nie tylko obsługuje „Mapowanie” i „Zmniejszanie”. Obsługuje również zapytania SQL, dane strumieniowe, uczenie maszynowe (ML) i algorytmy wykresów.

Spark zbudowany na Hadoop

Na poniższym diagramie przedstawiono trzy sposoby tworzenia platformy Spark przy użyciu składników Hadoop.

Istnieją trzy sposoby wdrażania platformy Spark, jak wyjaśniono poniżej.

  • Standalone- Wdrożenie autonomiczne Spark oznacza, że ​​Spark zajmuje miejsce na szczycie HDFS (rozproszony system plików Hadoop), a miejsce jest przydzielane jawnie na HDFS. Tutaj Spark i MapReduce będą działać obok siebie, aby pokryć wszystkie zadania iskry w klastrze.

  • Hadoop Yarn- Wdrożenie Hadoop Yarn oznacza po prostu, że iskra działa w Yarn bez konieczności wstępnej instalacji lub dostępu do roota. Pomaga zintegrować Spark z ekosystemem Hadoop lub stosem Hadoop. Pozwala to na działanie innych komponentów na szczycie stosu.

  • Spark in MapReduce (SIMR)- Spark w MapReduce służy do uruchamiania zadania iskrzenia oprócz samodzielnego wdrażania. Dzięki SIMR użytkownik może uruchomić Sparka i używać jego powłoki bez dostępu administratora.

Komponenty Spark

Poniższa ilustracja przedstawia różne składniki platformy Spark.

Apache Spark Core

Spark Core to podstawowy aparat wykonawczy dla platformy Spark, na którym są zbudowane wszystkie inne funkcje. Zapewnia przetwarzanie w pamięci i zestawy danych referencyjnych w zewnętrznych systemach pamięci masowej.

Spark SQL

Spark SQL to komponent znajdujący się na szczycie Spark Core, który wprowadza nową abstrakcję danych o nazwie SchemaRDD, która zapewnia obsługę danych ustrukturyzowanych i częściowo ustrukturyzowanych.

Spark Streaming

Spark Streaming wykorzystuje możliwości szybkiego planowania Spark Core do przeprowadzania analizy strumieniowej. Pozyskuje dane w mini-partiach i przeprowadza transformacje RDD (Resilient Distributed Datasets) na tych mini-partiach danych.

MLlib (biblioteka uczenia maszynowego)

MLlib to rozproszona platforma uczenia maszynowego powyżej platformy Spark ze względu na rozproszoną architekturę Spark opartą na pamięci. Jest to, zgodnie z benchmarkami, wykonane przez programistów MLlib w porównaniu z implementacjami alternatywnych najmniejszych kwadratów (ALS). Spark MLlib jest dziewięć razy szybszy niż wersja dyskowa platformy HadoopApache Mahout (zanim Mahout zyskał interfejs Sparka).

GraphX

GraphX ​​to rozproszony framework do przetwarzania wykresów na szczycie Spark. Zapewnia interfejs API do wyrażania obliczeń wykresów, który może modelować wykresy zdefiniowane przez użytkownika za pomocą interfejsu API abstrakcji Pregel. Zapewnia również zoptymalizowane środowisko wykonawcze dla tej abstrakcji.

Odporne, rozproszone zestawy danych

Resilient Distributed Datasets (RDD) to podstawowa struktura danych platformy Spark. Jest to niezmienny, rozproszony zbiór obiektów. Każdy zestaw danych w RDD jest podzielony na partycje logiczne, które mogą być obliczane na różnych węzłach klastra. RDD mogą zawierać dowolne typy obiektów Python, Java lub Scala, w tym klasy zdefiniowane przez użytkownika.

Formalnie RDD to zbiór rekordów tylko do odczytu, podzielony na partycje. RDD można tworzyć poprzez deterministyczne operacje na danych w stabilnej pamięci lub na innych RDD. RDD to odporny na błędy zbiór elementów, na których można pracować równolegle.

Istnieją dwa sposoby tworzenia RDD - parallelizing istniejąca kolekcja w programie sterownika lub referencing a dataset w zewnętrznym systemie pamięci masowej, takim jak współużytkowany system plików, HDFS, HBase lub dowolne źródło danych oferujące format wejściowy Hadoop.

Spark wykorzystuje koncepcję RDD, aby osiągnąć szybsze i wydajniejsze operacje MapReduce. Omówmy najpierw, jak odbywają się operacje MapReduce i dlaczego nie są one tak wydajne.

Udostępnianie danych jest powolne w MapReduce

MapReduce jest szeroko stosowany do przetwarzania i generowania dużych zestawów danych za pomocą równoległego, rozproszonego algorytmu w klastrze. Umożliwia użytkownikom pisanie obliczeń równoległych przy użyciu zestawu operatorów wysokiego poziomu, bez martwienia się o dystrybucję pracy i odporność na błędy.

Niestety, w większości obecnych frameworków jedynym sposobem ponownego wykorzystania danych między obliczeniami (np. Między dwoma zadaniami MapReduce) jest zapisanie ich w zewnętrznym stabilnym systemie pamięci masowej (np. HDFS). Chociaż ta struktura zapewnia liczne abstrakcje dostępu do zasobów obliczeniowych klastra, użytkownicy nadal chcą więcej.

Obie Iterative i Interactiveaplikacje wymagają szybszego udostępniania danych w równoległych zadaniach. Udostępnianie danych w MapReduce jest powolne z powodureplication, serialization, i disk IO. Jeśli chodzi o system pamięci masowej, większość aplikacji Hadoop spędza ponad 90% czasu na wykonywaniu operacji odczytu i zapisu HDFS.

Operacje iteracyjne w MapReduce

Ponownie wykorzystuj pośrednie wyniki w wielu obliczeniach w aplikacjach wieloetapowych. Na poniższej ilustracji wyjaśniono, jak działa bieżąca struktura podczas wykonywania operacji iteracyjnych na MapReduce. Powoduje to znaczne koszty z powodu replikacji danych, operacji we / wy dysków i serializacji, co powoduje spowolnienie systemu.

Interaktywne operacje na MapReduce

Użytkownik uruchamia zapytania ad hoc dotyczące tego samego podzbioru danych. Każde zapytanie wykona dyskowe operacje we / wy w stabilnej pamięci masowej, co może zdominować czas wykonywania aplikacji.

Na poniższej ilustracji wyjaśniono, jak działa bieżąca struktura podczas wykonywania zapytań interaktywnych w MapReduce.

Udostępnianie danych za pomocą Spark RDD

Udostępnianie danych w MapReduce jest powolne z powodu replication, serialization, i disk IO. Większość aplikacji Hadoop spędza ponad 90% czasu na wykonywaniu operacji odczytu i zapisu HDFS.

Rozpoznając ten problem, naukowcy opracowali wyspecjalizowaną strukturę o nazwie Apache Spark. Kluczową ideą iskry jestResilient Dprzypisane Datasety (RDD); obsługuje obliczenia przetwarzania w pamięci. Oznacza to, że przechowuje stan pamięci jako obiekt w zadaniach, a obiekt jest współdzielony między tymi zadaniami. Udostępnianie danych w pamięci jest od 10 do 100 razy szybsze niż w sieci i na dysku.

Spróbujmy teraz dowiedzieć się, jak iteracyjne i interaktywne operacje odbywają się w Spark RDD.

Operacje iteracyjne na Spark RDD

Poniższa ilustracja przedstawia iteracyjne operacje na Spark RDD. Przechowuje pośrednie wyniki w pamięci rozproszonej zamiast w stabilnej pamięci masowej (dysk) i przyspiesza system.

Note - Jeśli pamięć rozproszona (RAM) jest wystarczająca do przechowywania wyników pośrednich (stan zadania), to zapisze te wyniki na dysku

Interaktywne operacje na Spark RDD

Ta ilustracja przedstawia interaktywne operacje na Spark RDD. Jeśli różne zapytania są uruchamiane wielokrotnie na tym samym zestawie danych, te konkretne dane można przechowywać w pamięci, aby zapewnić lepsze czasy wykonywania.

Domyślnie każdy przekształcony RDD może zostać przeliczony za każdym razem, gdy wykonujesz na nim akcję. Jednak możesz teżpersistRDD w pamięci, w którym to przypadku Spark zachowa elementy w klastrze, aby uzyskać znacznie szybszy dostęp, gdy następnym razem go zapytasz. Dostępna jest również obsługa utrwalania RDD na dysku lub replikacji w wielu węzłach.

Spark to podprojekt Hadoop. Dlatego lepiej jest zainstalować Sparka w systemie opartym na systemie Linux. Poniższe kroki pokazują, jak zainstalować Apache Spark.

Krok 1: weryfikacja instalacji Java

Instalacja Java jest jedną z obowiązkowych rzeczy podczas instalacji Sparka. Wypróbuj następujące polecenie, aby sprawdzić wersję JAVA.

$java -version

Jeśli Java jest już zainstalowana w twoim systemie, zobaczysz następującą odpowiedź -

java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b13)
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)

Jeśli nie masz zainstalowanej Java w swoim systemie, zainstaluj Javę przed przejściem do następnego kroku.

Krok 2: Weryfikacja instalacji Scala

Aby zaimplementować Spark, powinieneś użyć języka Scala. Sprawdźmy więc instalację Scali za pomocą następującego polecenia.

$scala -version

Jeśli Scala jest już zainstalowana w twoim systemie, zobaczysz następującą odpowiedź -

Scala code runner version 2.11.6 -- Copyright 2002-2013, LAMP/EPFL

Jeśli nie masz zainstalowanej Scali w swoim systemie, przejdź do następnego kroku instalacji Scala.

Krok 3: Pobieranie Scali

Pobierz najnowszą wersję Scali, odwiedzając poniższy link Pobierz Scala . W tym samouczku używamy wersji scala-2.11.6. Po pobraniu w folderze pobierania znajdziesz plik tar Scala.

Krok 4: Instalowanie Scali

Wykonaj poniższe kroki, aby zainstalować Scala.

Rozpakuj plik tar Scala

Wpisz następujące polecenie, aby wyodrębnić plik tar Scala.

$ tar xvf scala-2.11.6.tgz

Przenieś pliki oprogramowania Scala

Użyj następujących poleceń, aby przenieść pliki oprogramowania Scala do odpowiedniego katalogu (/usr/local/scala).

$ su –
Password:
# cd /home/Hadoop/Downloads/
# mv scala-2.11.6 /usr/local/scala
# exit

Ustaw PATH dla Scala

Użyj następującego polecenia, aby ustawić PATH dla Scala.

$ export PATH = $PATH:/usr/local/scala/bin

Weryfikacja instalacji Scali

Po instalacji lepiej to zweryfikować. Użyj następującego polecenia, aby zweryfikować instalację programu Scala.

$scala -version

Jeśli Scala jest już zainstalowana w twoim systemie, zobaczysz następującą odpowiedź -

Scala code runner version 2.11.6 -- Copyright 2002-2013, LAMP/EPFL

Krok 5: Pobieranie Apache Spark

Pobierz najnowszą wersję Spark, odwiedzając poniższe łącze Pobierz Spark . W tym samouczku używamyspark-1.3.1-bin-hadoop2.6wersja. Po pobraniu plik tar Spark znajdziesz w folderze pobierania.

Krok 6: Instalowanie Sparka

Wykonaj poniższe czynności, aby zainstalować Sparka.

Wydobywanie smoły Spark

Następujące polecenie do wyodrębnienia pliku Spark tar.

$ tar xvf spark-1.3.1-bin-hadoop2.6.tgz

Przenoszenie plików oprogramowania Spark

Następujące polecenia do przenoszenia plików oprogramowania Spark do odpowiedniego katalogu (/usr/local/spark).

$ su –
Password:
# cd /home/Hadoop/Downloads/
# mv spark-1.3.1-bin-hadoop2.6 /usr/local/spark
# exit

Konfigurowanie środowiska dla Spark

Dodaj następujący wiersz do ~/.bashrcplik. Oznacza to dodanie lokalizacji, w której znajduje się plik oprogramowania Spark, do zmiennej PATH.

export PATH = $PATH:/usr/local/spark/bin

Użyj następującego polecenia, aby pozyskać plik ~ / .bashrc.

$ source ~/.bashrc

Krok 7: Weryfikacja instalacji Spark

Napisz następujące polecenie, aby otworzyć powłokę Spark.

$spark-shell

Jeśli Spark zostanie pomyślnie zainstalowany, znajdziesz następujący wynik.

Spark assembly has been built with Hive, including Datanucleus jars on classpath
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
15/06/04 15:25:22 INFO SecurityManager: Changing view acls to: hadoop
15/06/04 15:25:22 INFO SecurityManager: Changing modify acls to: hadoop
disabled; ui acls disabled; users with view permissions: Set(hadoop); users with modify permissions: Set(hadoop)
15/06/04 15:25:22 INFO HttpServer: Starting HTTP Server
15/06/04 15:25:23 INFO Utils: Successfully started service 'HTTP class server' on port 43292.
Welcome to
    ____             __
   / __/__ ___ _____/ /__
   _\ \/ _ \/ _ `/ __/ '_/
   /___/ .__/\_,_/_/ /_/\_\ version 1.4.0
      /_/
Using Scala version 2.10.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_71)
Type in expressions to have them evaluated.
Spark context available as sc
scala>

Spark wprowadza moduł programowania do przetwarzania danych strukturalnych o nazwie Spark SQL. Zapewnia abstrakcję programowania o nazwie DataFrame i może działać jako rozproszony silnik zapytań SQL.

Funkcje Spark SQL

Oto funkcje Spark SQL -

  • Integrated- Bezproblemowo mieszaj zapytania SQL z programami Spark. Spark SQL umożliwia wykonywanie zapytań dotyczących danych strukturalnych jako rozproszonego zestawu danych (RDD) w Spark, ze zintegrowanymi interfejsami API w językach Python, Scala i Java. Ta ścisła integracja ułatwia uruchamianie zapytań SQL wraz ze złożonymi algorytmami analitycznymi.

  • Unified Data Access- Ładowanie i przeszukiwanie danych z różnych źródeł. Schema-RDD zapewnia jeden interfejs do wydajnej pracy z danymi strukturalnymi, w tym tabelami Apache Hive, plikami parkietów i plikami JSON.

  • Hive Compatibility- Uruchom niezmodyfikowane zapytania Hive na istniejących magazynach. Spark SQL ponownie wykorzystuje interfejs Hive i MetaStore, zapewniając pełną zgodność z istniejącymi danymi, zapytaniami i funkcjami UDF programu Hive. Po prostu zainstaluj go obok Hive.

  • Standard Connectivity- Połącz przez JDBC lub ODBC. Spark SQL zawiera tryb serwera ze standardowymi łączami JDBC i ODBC.

  • Scalability- Używaj tego samego silnika do zapytań interaktywnych i długich. Spark SQL wykorzystuje model RDD do obsługi odporności na błędy w trakcie zapytania, umożliwiając skalowanie również do dużych zadań. Nie martw się o użycie innego silnika dla danych historycznych.

Architektura Spark SQL

Poniższa ilustracja wyjaśnia architekturę Spark SQL -

Ta architektura zawiera trzy warstwy, a mianowicie język API, schemat RDD i źródła danych.

  • Language API- Spark jest kompatybilny z różnymi językami i Spark SQL. Jest również obsługiwany przez te języki - API (python, scala, java, HiveQL).

  • Schema RDD- Spark Core został zaprojektowany ze specjalną strukturą danych zwaną RDD. Generalnie Spark SQL działa na schematach, tabelach i rekordach. Dlatego możemy użyć Schema RDD jako tabeli tymczasowej. Możemy nazwać ten schemat RDD jako ramkę danych.

  • Data Sources- Zwykle źródłem danych dla Spark-core jest plik tekstowy, plik Avro itp. Jednak źródła danych dla Spark SQL są inne. Są to plik Parquet, dokument JSON, tabele HIVE i baza danych Cassandra.

Więcej na ten temat omówimy w następnych rozdziałach.

DataFrame to rozproszona kolekcja danych zorganizowana w nazwane kolumny. Pod względem koncepcyjnym jest to odpowiednik tabel relacyjnych z dobrymi technikami optymalizacji.

DataFrame może być zbudowana z tablicy różnych źródeł, takich jak tabele Hive, pliki danych strukturalnych, zewnętrzne bazy danych lub istniejące RDD. To API zostało zaprojektowane dla nowoczesnych aplikacji Big Data i data science czerpiąc inspirację zDataFrame in R Programming i Pandas in Python.

Funkcje DataFrame

Oto zestaw kilku charakterystycznych cech DataFrame -

  • Możliwość przetwarzania danych o wielkości od kilobajtów do petabajtów w jednym klastrze węzłowym do dużego klastra.

  • Obsługuje różne formaty danych (Avro, csv, wyszukiwanie elastyczne i Cassandra) oraz systemy pamięci masowej (HDFS, tabele HIVE, mysql itp.).

  • Najnowocześniejsza optymalizacja i generowanie kodu za pomocą optymalizatora Spark SQL Catalyst (struktura transformacji drzewa).

  • Można go łatwo zintegrować ze wszystkimi narzędziami i strukturami Big Data za pośrednictwem Spark-Core.

  • Zapewnia interfejs API do programowania w językach Python, Java, Scala i R.

SQLContext

SQLContext to klasa, która służy do inicjowania funkcji Spark SQL. Obiekt klasy SparkContext (sc) jest wymagany do zainicjowania obiektu klasy SQLContext.

Następujące polecenie służy do inicjowania SparkContext za pomocą powłoki Spark.

$ spark-shell

Domyślnie obiekt SparkContext jest inicjowany przy użyciu nazwy sc kiedy zaczyna się iskra.

Użyj następującego polecenia, aby utworzyć SQLContext.

scala> val sqlcontext = new org.apache.spark.sql.SQLContext(sc)

Przykład

Rozważmy przykład rekordów pracowników w pliku JSON o nazwie employee.json. Użyj następujących poleceń, aby utworzyć DataFrame (df) i odczytać dokument JSON o nazwieemployee.json z następującą treścią.

employee.json - Umieść ten plik w katalogu, w którym jest obecny plik scala> wskaźnik jest zlokalizowany.

{
   {"id" : "1201", "name" : "satish", "age" : "25"}
   {"id" : "1202", "name" : "krishna", "age" : "28"}
   {"id" : "1203", "name" : "amith", "age" : "39"}
   {"id" : "1204", "name" : "javed", "age" : "23"}
   {"id" : "1205", "name" : "prudvi", "age" : "23"}
}

Operacje DataFrame

DataFrame zapewnia język specyficzny dla domeny do manipulacji danymi strukturalnymi. W tym miejscu podajemy kilka podstawowych przykładów przetwarzania danych strukturalnych za pomocą DataFrames.

Wykonaj czynności podane poniżej, aby wykonać operacje DataFrame -

Przeczytaj dokument JSON

Najpierw musimy przeczytać dokument JSON. Na tej podstawie wygeneruj ramkę danych o nazwie (dfs).

Użyj następującego polecenia, aby odczytać dokument JSON o nazwie employee.json. Dane są wyświetlane w postaci tabeli z polami - identyfikator, imię i wiek.

scala> val dfs = sqlContext.read.json("employee.json")

Output - Nazwy pól są pobierane automatycznie z employee.json.

dfs: org.apache.spark.sql.DataFrame = [age: string, id: string, name: string]

Pokaż dane

Jeśli chcesz zobaczyć dane w DataFrame, użyj następującego polecenia.

scala> dfs.show()

Output - Możesz zobaczyć dane pracowników w formacie tabelarycznym.

<console>:22, took 0.052610 s
+----+------+--------+
|age | id   |  name  |
+----+------+--------+
| 25 | 1201 | satish |
| 28 | 1202 | krishna|
| 39 | 1203 | amith  |
| 23 | 1204 | javed  |
| 23 | 1205 | prudvi |
+----+------+--------+

Użyj metody printSchema

Jeśli chcesz zobaczyć strukturę (schemat) DataFrame, użyj następującego polecenia.

scala> dfs.printSchema()

Output

root
   |-- age: string (nullable = true)
   |-- id: string (nullable = true)
   |-- name: string (nullable = true)

Użyj metody wyboru

Użyj następującego polecenia, aby pobrać name-kolumna między trzema kolumnami z DataFrame.

scala> dfs.select("name").show()

Output - Możesz zobaczyć wartości name kolumna.

<console>:22, took 0.044023 s
+--------+
|  name  |
+--------+
| satish |
| krishna|
| amith  |
| javed  |
| prudvi |
+--------+

Użyj filtra wieku

Użyj następującego polecenia, aby znaleźć pracowników w wieku powyżej 23 lat (wiek> 23).

scala> dfs.filter(dfs("age") > 23).show()

Output

<console>:22, took 0.078670 s
+----+------+--------+
|age | id   | name   |
+----+------+--------+
| 25 | 1201 | satish |
| 28 | 1202 | krishna|
| 39 | 1203 | amith  |
+----+------+--------+

Użyj metody groupBy

Użyj następującego polecenia, aby policzyć liczbę pracowników w tym samym wieku.

scala> dfs.groupBy("age").count().show()

Output - dwóch pracowników ma 23 lata.

<console>:22, took 5.196091 s
+----+-----+
|age |count|
+----+-----+
| 23 |  2  |
| 25 |  1  |
| 28 |  1  |
| 39 |  1  |
+----+-----+

Programowe uruchamianie zapytań SQL

SQLContext umożliwia aplikacjom uruchamianie zapytań SQL w sposób programowy podczas wykonywania funkcji SQL i zwraca wynik jako DataFrame.

Generalnie w tle SparkSQL obsługuje dwie różne metody konwertowania istniejących RDD na DataFrames -

Sr. No Metody i opis
1 Wnioskowanie o schemacie za pomocą refleksji

Ta metoda wykorzystuje odbicie do wygenerowania schematu RDD zawierającego określone typy obiektów.

2 Programowe określanie schematu

Druga metoda tworzenia DataFrame polega na wykorzystaniu interfejsu programistycznego, który pozwala na utworzenie schematu, a następnie zastosowanie go do istniejącego RDD.

Interfejs DataFrame umożliwia różnym źródłom danych pracę w Spark SQL. Jest to stół tymczasowy i może być obsługiwany jak normalny RDD. Zarejestrowanie ramki DataFrame jako tabeli umożliwia uruchamianie zapytań SQL dotyczących jej danych.

W tym rozdziale opiszemy ogólne metody ładowania i zapisywania danych przy użyciu różnych źródeł danych Spark. Następnie omówimy szczegółowo konkretne opcje, które są dostępne dla wbudowanych źródeł danych.

W SparkSQL dostępne są różne typy źródeł danych, z których niektóre są wymienione poniżej -

Sr. No Źródła danych
1 Zestawy danych JSON

Spark SQL może automatycznie przechwycić schemat zestawu danych JSON i załadować go jako DataFrame.

2 Hive Tables

Hive jest dostarczany w pakiecie z biblioteką Spark jako HiveContext, która dziedziczy po SQLContext.

3 Pilniki do parkietu

Parkiet to format kolumnowy, obsługiwany przez wiele systemów przetwarzania danych.