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. |