Spark SQL Dataframe
Dátový rámec podobný RDD je abstrakcia poskytovaná pre štruktúrované údaje v knižnici Spark SQL. Je to distribuovaná zbierka údajov, ktorá sa môže považovať za tabuľku v relačnej databáze s pripojenou schémou. Môže byť tiež definovaná ako zbierka pomenovaných stĺpcov. Spark SQL je jednou z knižníc dostupných v zásobníku Spark, ktorý obsahuje informácie o štruktúre a výpočte vykonávanom na údajoch. Tieto ďalšie informácie sa používajú na vykonanie optimalizácie. Dátový rámec obsahuje výhody RDD spolu s optimalizačnými technikami a toto API je k dispozícii v Pythone, R, Scale a Java.
Rôzne zdroje, ktoré generujú dataframe, sú
- Existujúci RDD
- Štruktúrované dátové súbory a databázy
- Tabuľky úľa
Potreba Dataframe
Komunita iskier sa vždy snažila priniesť do údajov štruktúru, kde kroky SQL v tomto smere sú krokmi podniknutými týmto smerom. Počiatočné API iskry RDD je určené pre neštruktúrované údaje, v ktorých sú výpočty aj údaje nepriehľadné. Preto existovala požiadavka na vytvorenie API, ktoré je schopné poskytnúť ďalšie výhody optimalizácie. Nižšie je uvedených niekoľko požiadaviek, ktoré tvorili základ dataframe-
- Spracujte štruktúrované a semi-dáta
- Viac zdrojov údajov
- Integrácia s viacerými programovacími jazykmi
- Počet operácií, ktoré možno na údajoch vykonať, ako napríklad výber a filter.
Ako vytvoriť Spark SQL Dataframe?
Pred pochopením spôsobov vytvorenia dataframe je dôležité porozumieť ďalšiemu konceptu, ktorým iskrové aplikácie vytvárajú dataframe z rôznych zdrojov. Tento koncept je známy ako iskra a je vstupným bodom pre všetky funkcie iskier. Predtým sme museli vytvoriť sparkConf, sparkContext alebo sqlContext jednotlivo, ale s iskričkou sú všetky zapuzdrené do jednej relácie, kde iskra pôsobí ako objekt iskry.
import org.apache.spark.sql.SparkSession
val spark = SparkSession
.builder()
.appName("SampleWork")
.config("config.option", "value")
.getOrCreate()
Spôsoby vytvorenia dataframe
-
Z existujúceho RDD
Existujú dva spôsoby, ako je možné vytvoriť dátový rámec prostredníctvom RDD. Jedným zo spôsobov je použitie odrazu, ktorý automaticky odvodzuje schému údajov a druhým prístupom je programové vytvorenie schémy a následné uplatnenie na RDD.
- Vyvodením schémy
Jednoduchý spôsob, ako previesť RDD na Dataframe, je, keď obsahuje triedy prípadov kvôli rozhraniu Spark SQL. Argumenty odovzdané do tried prípadov sa vyzdvihnú pomocou odrazu a stane sa názvom stĺpcov tabuľky. Sekvencie a polia sa môžu definovať aj v triedach prípadov. RDD, ktorý sa vytvorí pomocou triedy prípadov, sa dá implicitne konvertovať na Dataframe pomocou metódy toDF ().
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext.implicits._
case class Transport(AutoName: String, year: Int)
val Vehicle = sc.textFile("//path//").map(_.split(", ")).map(p => Transport(p(0), p(1)).toDF()
Vytvorí sa dátový rámec vozidla a môže sa zaregistrovať ako tabuľka, na základe ktorej možno vykonať príkazy sql.
- Programovým špecifikovaním schémy
Môžu sa vyskytnúť prípady, keď nevieme vopred túto schému alebo scenáre, v ktorých triedy prípadov nemôžu obsahovať viac ako 22 polí. V takýchto podmienkach využívame prístup programového vytvárania schémy. Najskôr sa vytvorí RDD riadkov z pôvodného RDD, tj prevádza sa objekt rdd z rdd (t) na rdd (riadok). Potom vytvorte schému pomocou objektov StructType (Table) a StructField (Field). Táto schéma sa uplatňuje na RDD riadkov pomocou metódy createDataFrame, ktorá pripomína štruktúru vytvoreného rdd (riadok) vytvorenú skôr.
val Vehicle = sc.textFile("//path")
import org.apache.spark.sql._
val schema = StructType(Array(StructField("AutoName", StringType, true), StructField("Year", IntegerType, true)))
scala> val rowRDD = vehicle.map(_.split(", ")).map(p => org.apache.spark.sql.Row(p(0), p(1).toInt))
val vehicleSchemaRDD = sqlContext.applySchema(rowRDD, schema)
-
Prostredníctvom zdrojov údajov
Spark umožňuje vytváranie dátových mien prostredníctvom viacerých zdrojov, ako sú napríklad úľ, json, parkety, CSV a textové súbory, ktoré sa dajú použiť aj na vytváranie dátových mien.
Val file=sqlContext.read.json(“path to the json file”)
Val file=sqlContext.read.csv(“path to the json file”)
Val file=sqlContext.read.text(“path to the json file”)
val hiveData = new org.apache.spark.sql.hive.HiveContext(sc)
val hiveDF = hiveData.sql(“select * from tablename”)
Operácie DataFrame
Pretože dáta sú uložené v tabuľkovom formáte spolu so schémou, existuje niekoľko operácií, ktoré je možné vykonať na dátových rámcoch. Umožňuje viac operácií, ktoré je možné vykonať na údajoch v dátových rámcoch.
Zvážte súbor je dataframe, ktorý bol vytvorený zo súboru csv s dvoma stĺpcami - FullName a AgePerPA
- printSchema () - Na zobrazenie štruktúry schémy
file.printSchema()
// |-- AgePerPA: long (nullable = true)
// |-- FullName: string (nullable = true)
- select- Podobne ako v prípade príkazu SQL v príkaze SQL, zobrazia sa údaje, ako sa uvádza v príkazu select.
file.select("FullName").show()
// +-------+
// | name|
// +-------+
// |Sam|
// |Jodi|
// | Bala|
// +-------+
- Filter– Zobrazenie filtrovaných údajov z údajového rámca. Podmienka uvedená v príkaze
file.filter($"AgePerPA" > 18).show()
- GroupBy- Na zoskupenie hodnôt
file.groupBy("AgePerPA").count().show()
- show () - zobrazenie obsahu dataframe
file.show()
obmedzenia
Aj keď s údajovými rámcami môžete zachytiť chybu syntaxe sql v samotnom čase kompilácie, nie je schopná zvládnuť žiadnu chybu súvisiacu s analýzou, kým nie je spustená. Ak sa napríklad v kóde odkazuje na neexistujúci názov stĺpca, do spustenia sa nezaznamená. To by viedlo k strate času vývojárov a nákladov na projekt.
Záver - Spark SQL Dataframe
Tento článok poskytuje celkový obraz (potreba, vytvorenie, obmedzenia) o dátovom rámci API Spark SQL. Vďaka popularite dátových rámcov API zostáva Spark SQL jednou z najpoužívanejších knižníc. Rovnako ako RDD, poskytuje funkcie ako odolnosť proti chybám, lenivé vyhodnotenie, spracovanie v pamäti spolu s niektorými ďalšími výhodami. Môže byť definovaná ako dáta distribuované v klastri v tabuľkovej forme. Údajový rámec teda bude mať k nemu priradenú schému a dá sa vytvoriť pomocou viacerých zdrojov prostredníctvom objektu relácie iskier.
Odporúčané články
Toto je sprievodca Spark SQL Dataframe. Tu diskutujeme o spôsoboch vytvorenia dataframe s operáciami a obmedzeniami DataFrame. Viac informácií nájdete aj v nasledujúcom článku -
- Príkazy Spark Shell
- Kurzory v SQL
- Obmedzenia SQL
- Databáza v SQL
- Typy pripojení v programe Spark SQL (príklady)
- Sprievodca zoznamom príkazov shellu Unix