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

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

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

  1. printSchema () - Na zobrazenie štruktúry schémy

file.printSchema()
// |-- AgePerPA: long (nullable = true)
// |-- FullName: string (nullable = true)

  1. 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|
// +-------+

  1. Filter– Zobrazenie filtrovaných údajov z údajového rámca. Podmienka uvedená v príkaze

file.filter($"AgePerPA" > 18).show()

  1. GroupBy- Na zoskupenie hodnôt

file.groupBy("AgePerPA").count().show()

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

  1. Príkazy Spark Shell
  2. Kurzory v SQL
  3. Obmedzenia SQL
  4. Databáza v SQL
  5. Typy pripojení v programe Spark SQL (príklady)
  6. Sprievodca zoznamom príkazov shellu Unix

Kategórie: