Spark Dataframe SQL

Podatkovni okvir, podoben RDD, je abstrakcija za strukturirane podatke v knjižnici Spark SQL. Gre za porazdeljeno zbirko podatkov, ki se lahko šteje za tabelo v relacijski podatkovni bazi s priloženo shemo. Opredelimo ga lahko tudi kot zbirko imenovanih stolpcev. Spark SQL je ena od knjižnic, ki so na voljo v svežnju Spark, ki vsebuje informacije o strukturi in izračunavanju, ki se izvaja na podatkih. Te dodatne informacije se uporabljajo za optimizacijo. Podatkovni okvir vključuje prednosti RDD skupaj z optimizacijskimi tehnikami in ta API je na voljo v Python, R, Scala in Java.

Različni viri, ki ustvarjajo podatkovni okvir, so:

  • Obstoječi RDD
  • Strukturirane podatkovne datoteke in baze podatkov
  • Tabele za panje

Potreba po podatkovnem okviru

Skupnost isker je vedno poskušala strukturo približati podatkom, kjer so podatki SQL-okvirji podatkov SQL koraki v tej smeri. Začetni API iskre, RDD je za nestrukturirane podatke, kjer sta izračunavanja in podatki neprozorna. Zato se je pojavila zahteva po izdelavi API-ja, ki lahko zagotovi dodatne prednosti optimizacije. Spodaj je nekaj zahtev, ki so bile osnova podatkovnih okvirov -

  • Strukturirani in polpodatki
  • Več virov
  • Integracija z več programskimi jeziki
  • Število operacij, ki jih je mogoče izvesti na podatkih, kot sta select & filter.

Kako ustvariti Spark SQL Dataframe?

Preden razumete načine ustvarjanja podatkovnega okvira, je pomembno razumeti drug koncept, s katerim iskalne aplikacije ustvarijo podatkovni okvir iz različnih virov. Ta koncept je znan kot sparksession in je vstopna točka za vse funkcije iskre. Prej smo morali ustvariti sparkConf, sparkContext ali sqlContext posamično, vendar z iskanjem pene, vsi so zajeti v eni seji, kjer iskrica deluje kot objekt iskric.

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

Načini ustvarjanja podatkovnega okvira

  1. Iz obstoječe RDD

Obstajata dva načina, kako lahko ustvarite podatkovni okvir s pomočjo RDD. Eden od načinov je uporaba refleksije, ki samodejno sklepa na shemo podatkov, drugi pristop pa je, da programsko ustvarite shemo in nato uporabite za RDD.

  • Z navajanjem na shemo

Preprost način pretvorbe RDD v Dataframe je, kadar vsebuje razrede primerov zaradi vmesnika SQL Spark. Argumenti, predani razredom primerov, se pridobijo z uporabo refleksije in postane ime stolpcev tabele. Zaporedja in nizi se lahko določijo tudi v razredih primerov. RDD, ki bo izdelan z razredom primerov, se lahko implicitno pretvori v Dataframe z metodo 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 podatkovnega okvira je ustvarjeno in ga je mogoče registrirati kot tabelo, proti kateri se lahko izvedejo sql stavki.

  • S programsko določitvijo sheme

Mogoče so primeri, ko predhodno ne poznamo sheme ali scenarijev, kadar razredi primerov ne morejo zajeti več kot 22 polj. V takih pogojih uporabljamo pristop programskega ustvarjanja sheme. Najprej se iz prvotnega RDD ustvari RDD vrstic, torej pretvarja objekt rdd iz rdd (t) v rdd (vrstica). Nato ustvarite shemo z uporabo predmetov StructType (Tabela) in StructField (Field). Ta shema se uporablja za RDD vrstic z uporabo metode createDataFrame, ki spominja na strukturo rdd (vrstice), ustvarjeno prej.

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

Spark omogoča ustvarjanje podatkovnih okvirjev z več viri, kot so panj, json, parket, csv in besedilne datoteke, ki se lahko uporabljajo tudi za ustvarjanje podatkovnih okvirjev.

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

Ker so podatki shranjeni v tabelarni obliki skupaj s shemo, je na podatkovnih okvirih mogoče izvesti številne operacije. Omogoča več operacij, ki se lahko izvajajo na podatkih v podatkovnih okvirih.

Datoteka preuči podatkovni okvir, ki je bil ustvarjen iz datoteke csv z dvema stolpcema - FullName in AgePerPA

  1. printSchema () - Za ogled strukture sheme

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

  1. select- Podobno kot select izjavo v SQL, prikazuje podatke, kot so omenjeni v select izjavi.

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

  1. Filter - za ogled filtriranih podatkov iz podatkovnega okvira. Pogoj, naveden v ukazu

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

  1. GroupBy - Če želite združiti vrednosti

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

  1. show () - za prikaz vsebine podatkovnega okvira

file.show()

Omejitve

Čeprav lahko s pomočjo podatkovnih okvirjev ujamete napako sintakse sql v samem času prevajanja, ta ni sposoben obdelati nobene napake, povezane z analizo, do izvajanja. Na primer, če se v kodi sklicuje neobstoječe ime stolpca, ga ne bomo opazili do konca izvajanja. To bi vodilo do zapravljanja časa razvijalca in stroškov projekta.

Zaključek - Spark SQL Dataframe

Ta članek ponuja splošno sliko (potreba, ustvarjanje, omejitve) o API-ju podatkovnega okvira Spark SQL. Spark SQL zaradi priljubljenosti API-jev za podatkovne okvire ostaja ena od pogosto uporabljenih knjižnic. Tako kot RDD ponuja funkcije, kot so odstopanje napak, lenobno ocenjevanje, obdelava v pomnilniku skupaj z nekaterimi dodatnimi prednostmi. Opredelimo ga lahko kot podatke, razporejene po grozdu v tabeli. Tako bo imel podatkovni okvir povezan z njim in ga je mogoče ustvariti iz več virov prek objekta iskrišča.

Priporočeni članki

To je vodnik za Spark SQL Dataframe. Tukaj razpravljamo o načinih ustvarjanja podatkovnega okvira z operacijami in omejitvami DataFrame. Če želite izvedeti več, si oglejte tudi naslednji članek -

  1. Iskreni ukazi lupine
  2. Kazalniki v SQL
  3. Omejitve SQL
  4. Baza podatkov v SQL
  5. Vrste združitev v Spark SQL (primeri)
  6. Vodnik po seznamu ukazov školjke Unix

Kategorija: