Spark SQL Dataframe

Okvir podataka sličan RDD-u je apstrakcija za strukturirane podatke u biblioteci Spark SQL. To je distribuirana zbirka podataka koja se može smatrati tablicom u relacijskoj bazi podataka s priloženom shemom. Može se definirati i kao zbirka imenovanih stupaca. Spark SQL jedna je od biblioteka koje su dostupne u paketu Spark koja sadrži podatke o strukturi i izračuna koji se izvode na podacima. Te se dodatne informacije upotrebljavaju za optimizaciju. Dataframe sadrži prednosti RDD-a zajedno s tehnikama optimizacije, a ovaj API dostupan je u Python-u, R, Scali i Javi.

Različiti izvori koji stvaraju podatkovni okvir su:

  • Postojeći RDD
  • Strukturirane podatkovne datoteke i baze podataka
  • Stolovi za košnice

Potreba okvira podataka

Zajednica iskre uvijek je pokušavala donijeti strukturu podacima, gdje su SQL-okviri podataka SQL koraci poduzeti u tom smjeru. Početni API iskre, RDD je za nestrukturirane podatke gdje su izračunavanja i podaci neprozirni. Stoga je postojao zahtjev da se napravi API koji je u mogućnosti pružiti dodatne prednosti optimizacije. Ispod je nekoliko zahtjeva koji su činili osnovu okvira podataka-

  • Obrađuje strukturirane i polu-podatke
  • Višestruki izvori podataka
  • Integracija s više programskih jezika
  • Broj operacija koje se mogu izvesti na podacima kao što su select & filter.

Kako stvoriti Spark SQL Dataframe?

Prije razumijevanja načina kreiranja podatkovnog okvira važno je razumjeti još jedan koncept pomoću kojeg iskre iskre stvaraju podatkovni okvir iz različitih izvora. Ovaj je koncept poznat pod nazivom sparksession i početna je točka svih funkcionalnosti iskre. Ranije smo morali izraditi sparkConf, sparkContext ili sqlContext pojedinačno, ali s sparksessionom, svi su zaokruženi u jednoj sesiji, gdje iskra djeluje kao objekt iskristalizacije.

import org.apache.spark.sql.SparkSession
val spark = SparkSession
.builder()
.appName("SampleWork")
.config("config.option", "value")
.getOrCreate()

Načini stvaranja podatkovnog okvira

  1. Iz postojećeg RDD-a

Postoje dva načina na koji se može kreirati Dataframe putem RDD-a. Jedan od načina je upotreba refleksije koja automatski zaključuje shemu podataka, a drugi pristup je kreiranje sheme programatski i primjena na RDD.

  • Navođenjem sheme

Jednostavan način pretvaranja RDD-a u Dataframe je kada sadrži klase slučaja zbog Sparkovog SQL sučelja. Argumenti proslijeđeni klase slučaja dohvaćeni su korištenjem refleksije i on postaje naziv stupaca tablice. Sekvence i nizovi mogu se definirati i u klasama slučajeva. RDD koji će se stvoriti pomoću klase slučaja može se implicitno pretvoriti u Dataframe pomoću metode 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()

Vozilo podatkovnog okvira kreira se i može se registrirati kao tablica protiv koje se mogu izvršiti sql izrazi.

  • Programskim određivanjem sheme

Može biti slučajeva kada prethodno nismo upoznati sa shemom ili scenarijima kada klase slučajeva ne mogu imati više od 22 polja. U takvim uvjetima koristimo pristup programskog kreiranja sheme. Prvo, RDD redaka stvara se od izvornog RDD-a, tj. Pretvara rdd objekt iz rdd (t) u rdd (red). Zatim kreirajte shemu pomoću objekata StructType (tablica) i StructField (polje). Ova se shema primjenjuje na RDD redaka pomoću metode createDataFrame koja nalikuje strukturi rdd (retka) stvorenoj ranije.

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. Kroz izvore podataka

Spark omogućuje stvaranje okvira s podacima iz više izvora kao što su košnica, json, parket, csv i tekstualne datoteke koje se također mogu koristiti za stvaranje okvira.

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”)

Operacije DataFrame

Kako se podaci pohranjuju u tabličnom obliku zajedno sa shemom, postoji niz operacija koje se mogu izvesti na okvirima podataka. Omogućuje više operacija koje se mogu izvesti na podacima u okvirima podataka.

Datoteka za razmatranje je podatkovni okvir koji je stvoren iz CSV datoteke s dva stupca - FullName i AgePerPA

  1. printSchema () - Za prikaz strukture sheme

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

  1. select- Sličan odabiru izjavu u SQL-u, prikazuje podatke kao što je spomenuto u naredbi select.

file.select("FullName").show()
// +-------+
// | name|
// +-------+
// |Sam|
// |Jodi|
// | Bala|
// +-------+

  1. Filter - Za prikaz filtriranih podataka iz podatkovnog okvira. Uvjet naveden u naredbi

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

  1. GroupBy - Da biste grupirali vrijednosti

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

  1. show () - za prikaz sadržaja okvira podataka

file.show()

Ograničenja

Iako pomoću dataframes-a možete uhvatiti sql grešku sintakse u samom vremenu prevođenja, on nije sposoban za rukovanje bilo kojom pogreškom koja se odnosi na analizu do runtimea. Na primjer, ako se u kodu navodi referenca na nepostojeće ime stupca, neće se primijetiti sve dok runtime. To bi vodilo gubitku vremena i troškova programera.

Zaključak - Spark SQL Dataframe

Ovaj članak daje sveobuhvatnu sliku (potreba, stvaranje, ograničenja) o API-ju podatkovnog okvira Spark SQL. Spark SQL je zbog popularnosti API-ja podatkovnih okvira i dalje jedna od najčešće korištenih knjižnica. Kao i RDD, pruža značajke poput tolerancije na greške, lijene procjene, obrade u memoriji zajedno s nekim dodatnim prednostima. Može se definirati kao podatak distribuiran preko klastera u tabelarnom obliku. Dakle, podatkovni okvir će imati shemu povezanu s njim i može se stvoriti iz više izvora putem iskre sesije objekta.

Preporučeni članci

Ovo je vodič za Spark SQL Dataframe. Ovdje smo raspravljali o načinima kreiranja podatkovnog okvira s operacijama i ograničenjima DataFrame. Možete pogledati i sljedeći članak da biste saznali više -

  1. Naredbe iskre ljuske
  2. Kursori u SQL-u
  3. SQL ograničenja
  4. Baza podataka u SQL-u
  5. Vrste pridruživanja u Spark SQL-u (primjeri)
  6. Vodič za popis naredbi Unix Shell

Kategorija: