Spark SQL Dataframe

RDD: n kaltainen tietokehys on abstraktio, joka annetaan Spark SQL -kirjaston strukturoidulle tiedolle. Se on hajautettu tietokokoelma, jota voidaan pitää taulukkona relaatiotietokannassa, johon on liitetty kaavio. Se voidaan määritellä myös nimettyjen sarakkeiden kokoelmaksi. Spark SQL on yksi Spark-pinossa olevista kirjastoista, joka sisältää tietoja rakenteesta ja tietojen suorittamisesta. Tätä lisätietoa käytetään optimointiin. Tietokehys sisältää RDD: n edut yhdessä optimointitekniikoiden kanssa. Tämä sovellusliittymä on saatavana Pythonissa, R: ssä, Scalassa ja Javassa.

Eri lähteet, jotka muodostavat datakehyksen, ovat-

  • Nykyinen RDD
  • Jäsennellyt datatiedostot ja tietokannat
  • Pesän pöydät

Tietokehyksen tarve

Spark-yhteisö on aina yrittänyt tuoda dataan rakenteen, jossa SQL-datakehykset ovat siihen suuntaan toteutetut vaiheet. Alkuperäinen kipinän API, RDD, on tarkoitettu jäsentämättömälle tiedolle, jossa sekä laskelmat että data ovat läpinäkymättömiä. Siksi vaadittiin API: n luomista, joka pystyy tarjoamaan lisäoptimointietuja. Alla on muutama vaatimus, jotka muodostivat tiedonkehyksen perustan

  • Prosessoi jäsenneltyä ja puolitietoa
  • Useita tietolähteitä
  • Integrointi useiden ohjelmointikielten kanssa
  • Määrä operaatioita, jotka voidaan suorittaa tiedoille, kuten valitse & suodata.

Kuinka luoda Spark SQL Dataframe?

Ennen kuin ymmärrät tapoja luoda datakehys, on tärkeää ymmärtää toinen käsite, jolla kipinäsovellukset luovat datakehyksen eri lähteistä. Tätä konseptia kutsutaan kipinäkampanjaksi ja se on kaikkien kipinätoimintojen lähtökohta. Aikaisemmin meidän oli luotava sparkConf, sparkContext tai sqlContext erikseen, mutta kipinäistunnolla, kaikki on kapseloitu yhteen istuntoon, jossa kipinä toimii kipinöintiobjektina.

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

Tietokehyksen luomisen tapoja

  1. Nykyisestä RDD: stä

Datakehystä voidaan luoda RDD: n avulla kahdella tavalla. Yksi tapa on käyttää heijastusta, joka päättelee automaattisesti datakaavan, ja toinen lähestymistapa on luoda kaava ohjelmallisesti ja soveltaa sitten RDD: hen.

  • Päättämällä kaavasta

Helppo tapa muuntaa RDD Dataframe-kehykseen on, kun se sisältää tapausluokat Sparkin SQL-käyttöliittymän vuoksi. Tapausluokkiin siirretyt argumentit haetaan heijastuksella ja siitä tulee taulukon sarakkeiden nimi. Sekvenssit ja taulukot voidaan myös määritellä tapausluokissa. Tapausluokkaa käyttämällä luotava RDD voidaan implisiittisesti muuntaa Dataframe-kehykseen käyttämällä toDF () -menetelmää.

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

Datakehyksen ajoneuvo luodaan ja voidaan rekisteröidä taulukkona, jota vastaan ​​voidaan suorittaa sql-lauseet.

  • Määrittämällä ohjelmallisesti kaavio

Joissakin tapauksissa emme ole etukäteen tietoisia kaavasta tai skenaarioista, joissa tapausluokat eivät voi ylittää 22 kenttää. Tällaisissa olosuhteissa käytämme mallia ohjelmallisesti mallin luomisessa. Ensin luodaan rivien RDD alkuperäisestä RDD: stä, eli muunnetaan rdd-objekti rdd (t): stä rdd (riviksi). Luo sitten kaavio käyttämällä StructType (Table) ja StructField (Field) -objekteja. Tätä kaavaa sovelletaan rivien RDD: hen käyttämällä createDataFrame-menetelmää, joka muistuttaa aikaisemmin luodun rdd (rivin) rakennetta.

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. Tietolähteiden kautta

Spark mahdollistaa datakehysten luomisen useista lähteistä, kuten pesästä, jsonista, parketista, csv-tiedostosta ja tekstitiedostoista, joita voidaan käyttää myös datakehysten luomiseen.

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

DataFrame-toiminnot

Koska tiedot tallennetaan taulukkomuodossa muodon kanssa, datakehyksissä voidaan suorittaa useita toimintoja. Se sallii useita toimintoja, jotka voidaan suorittaa datakehyksien tiedoille.

Harkitse tiedosto on tietokehys, joka on luotu csv-tiedostosta, jossa on kaksi saraketta - FullName ja AgePerPA

  1. printSchema () - Voit tarkastella kaavion rakennetta

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

  1. Valitse- Samankaltainen valitaksesi lauseen SQL: ssä, näyttää tiedot valitun käskyn mukaisilla tavoilla.

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

  1. Suodatin - Voit näyttää suodatetut tiedot tietokehyksestä. Komennossa mainittu ehto

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

  1. GroupBy - ryhmittelemään arvot

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

  1. show () - näyttää datakehyksen sisällön

file.show()

rajoitukset

Vaikka datakehyksillä voit saada SQL-syntaksivirheen itse käännöshetkellä, se ei kykene käsittelemään analyyseihin liittyviä virheitä ajon aikana. Esimerkiksi, jos ei-olemassa olevaa sarakkeen nimeä viitataan koodiin, sitä ei huomioida ajon aikana. Tämä johtaisi kehittäjän ajan ja projektikustannusten tuhlaamiseen.

Johtopäätös - Spark SQL Dataframe

Tämä artikkeli antaa yleiskuvan (tarve, luominen, rajoitukset) Spark SQL: n datakehyksen API: sta. Dataframe-sovellusliittymien suosion vuoksi Spark SQL on edelleen yksi laajalti käytetyistä kirjastoista. Aivan kuten RDD, se tarjoaa ominaisuuksia, kuten vikasietoisuus, laiska arviointi, muistin prosessointi ja joitain lisäetuja. Se voidaan määritellä dataksi, joka jakautuu klusterin yli taulukkomuodossa. Tällöin datakehykseen on liitetty kaavio, ja se voidaan luoda useiden lähteiden kautta kipinäistuntokohteen kautta.

Suositellut artikkelit

Tämä on opas Spark SQL Dataframe -sovellukseen. Tässä keskustellaan datakehyksen luontitavoista DataFrame-toimintojen ja rajoitusten kanssa. Voit myös tarkastella seuraavaa artikkelia saadaksesi lisätietoja -

  1. Spark Shell -komennot
  2. Kohdistimet SQL: ssä
  3. SQL-rajoitukset
  4. Tietokanta SQL: ssä
  5. Spark SQL: n liitostyypit (esimerkit)
  6. Opas Unix-kuorikomentojen luetteloon

Luokka: