Uvod u svježe skupove podataka
Skup podataka je struktura podataka u Spark SQL-u koja pruža sigurnost tipa kompilacije, objektno orijentirano sučelje kao i Spark SQL optimizaciju.
Konceptualno je to tablična struktura u memoriji koja ima redove i stupce i koja je raspoređena u više čvorova poput Dataframea.
To je proširenje podatkovnog okvira. Glavna razlika između skupa podataka i skupa podataka je da su skupovi podataka snažno tipkani.
(Skup podataka) = (podatkovni okvir + sigurnost vremena kompilacije)
Skup podataka izdan je u Spark 1.6 kao eksperimentalni API. I Dataframe i Skup podataka su ujedinjeni u Spark 2.0 verziji, a Dataframe postaje pseudonim za Dataset (Red).
Dataframe = Skup podataka (redak)
Zašto nam treba Spark Dataset?
Da bismo jasno razumjeli Dataset, moramo započeti s malo povijesti iskre i njenog razvoja.
RDD je srž Iskra. Inspiriran SQL-om i da bi olakšao stvari, Dataframe je stvoren na vrhu RDD-a. Dataframe je ekvivalentan tablici u relacijskoj bazi podataka ili DataFrame na Pythonu.
RDD osigurava sigurnost tipa kompajliranja, ali u RDD-u nema automatske optimizacije.
Dataframe pruža automatsku optimizaciju, ali nedostaje sigurnost vrste kompilacije.
Skup podataka dodan je kao proširenje Dataframe. Skup podataka kombinira značajke i RDD-a (tj. Sigurnost tipa sastavljanja) kao i Dataframe (tj. Spark SQL automatska optimizacija).
(RDD (Spark 1.0)) -> (Okvir podataka (Spark1.3)) -> (Skup podataka (Spark1.6))
Kako Dataset ima sigurnost u kompajliranju, stoga je podržan samo na kompajliranom jeziku (Java & Scala), ali ne i na interpretiranom jeziku (R & Python). No API za podatkovni okvir Spark dostupan je na sva četiri jezika (Java, Scala, Python & R) koje podržava Spark.
Jezik koji podržava Spark | API podatkovnog okvira | API skupa podataka |
Sastavljeni jezik (Java i skala) | DA | DA |
Tumačeni jezik (R & Python) | DA | NE |
Kako stvoriti svježinu podataka?
Postoji više načina kreiranja skupa podataka na temelju casecase
1. Prvo stvorite SparkSession
SparkSession je jedina ulazna točka za iskričavu aplikaciju koja omogućuje interakciju s temeljnom funkcionalnošću Spark-a i programiranje Spark-a s API-jem DataFrame i Dataset.
val spark = SparkSession
.builder()
.appName("SparkDatasetExample")
.enableHiveSupport()
.getOrCreate()
- Za izradu skupa podataka koristeći se osnovnom strukturom podataka poput raspona, slijeda, popisa itd.:
Korištenje raspona
Korištenje slijeda
Korištenje Popisa
- Za izradu skupa podataka pomoću slijeda klasa slučaja pozivanjem .toDS () metode:
- Za izradu skupa podataka iz RDD-a pomoću .toDS ():
- Za izradu skupa podataka iz Dataframe pomoću klase slučaja:
- Za izradu skupa podataka iz Dataframea pomoću Tuples:
2. Operacije na skupu podataka iskre
- Primjer broja riječi
- Pretvorite iskrivi skup podataka u podatkovni okvir
Također možemo pretvoriti iskrenje skupa podataka u Datafame i koristiti API-je Dataframe na sljedeći način:
Značajke skupa podataka iskre
- Vrsta sigurnosti
Skup podataka pruža sigurnost tipa sastavljanja. To znači da će se sintaksa, kao i pogreške u analizi aplikacije provjeriti u trenutku sastavljanja prije nego što se pokrene.
- Nepromjenljivost
Skup podataka je također nepromjenjiv poput RDD i Dataframe. To znači da ne možemo promijeniti stvoreni skup podataka. Svaki put kada se stvori novi skup podataka kada se bilo koja transformacija primijeni na skup podataka.
- Shema
Skup podataka je tablična struktura unutar memorije koja ima redove i imenovane stupce.
- Performanse i optimizacija
Kao i Dataframe, Skup podataka također koristi Catalyst Optimization za generiranje optimiziranog plana logičkih i fizičkih upita.
- Programski jezik
Api baze podataka prisutni su samo u Javi i Scali koji su sabrani jezici, ali ne i na Python-u koji je interpretirani jezik.
- Lijena procjena
Kao i RDD i Dataframe, skup podataka također provodi procjenu lijenosti. To znači da se izračunavanje događa samo kad se izvrši radnja. Spark pravi samo planove tijekom faze transformacije.
- Serijalizacija i odvoz smeća
Spark skup podataka ne koristi standardne serialize (Kryo ili Java serialization). Umjesto toga, koristi Tungsten-ove brze memorijske enkodere koji razumiju unutarnju strukturu podataka i mogu učinkovito transformirati objekte u unutarnju binarnu pohranu. Koristi izvanserijsku serializaciju podataka pomoću volframovog enkodera i stoga nema potrebe za skupljanjem smeća.
Zaključak
Skup podataka je najbolji i za RDD i za Dataframe. RDD osigurava sigurnost tipa kompilacije, ali nedostaje automatska optimizacija. Dataframe pruža automatsku optimizaciju, ali nedostaje sigurnost vrste kompilacije. Skup podataka pruža sigurnost i način sastavljanja, kao i automatsku optimizaciju. Stoga je skup podataka najbolji izbor za programere Spark koji koriste Java ili Scala.
Preporučeni članci
Ovo je vodič za Spark Dataset. Ovdje smo raspravljali o tome kako stvoriti sjajni skup podataka na više načina s primjerima i značajkama. Možete također pogledati sljedeće članke da biste saznali više -
- Naredbe iskre ljuske
- Spark Intervju Pitanja
- Karijera u Sparku
- Streaming iskre
- Različite operacije povezane s Tupovima
- Spark SQL Dataframe
- Vrste pridruživanja u Spark SQL-u (primjeri)
- Vodič za popis naredbi Unix Shell
- Top 6 komponenti iskre