Spark SQL Dataframe

RDD-ga sarnane andmeraam on Spark SQL-i teegis struktureeritud andmete jaoks ette nähtud abstraktsioon. See on hajutatud andmekogum, mida võib käsitada relatsiooniandmebaasi tabelina, millele on lisatud skeem. Seda saab määratleda ka nimega veergude kogumina. Spark SQL on üks Spark-pinu saadaval olevatest teekidest, mis sisaldab teavet andmete struktuuri ja arvutamise kohta. Seda lisateavet kasutatakse optimeerimise jaoks. Andmeraam hõlmab RDD eeliseid koos optimeerimise tehnikatega ja see API on saadaval Pythonis, R-s, Scalas ja Java-s.

Erinevad andmeraami genereerivad allikad on-

  • Olemasolev RDD
  • Struktureeritud andmefailid ja andmebaasid
  • Taru lauad

Dataframe'i vajadus

Spark-kogukond on alati proovinud tuua andmete struktuuri, kus SQL-andmeraamid on selles suunas astutud sammud. Säde, RDD, algne API on struktureerimata andmete jaoks, kus nii arvutused kui ka andmed on läbipaistmatud. Seega oli nõue luua API, mis suudab optimeerimisest saada täiendavaid eeliseid. Allpool on toodud mõned nõuded, mis olid andmeraami aluseks -

  • Töötle struktureeritud ja poolandmeid
  • Mitu andmeallikat
  • Integreerimine mitme programmeerimiskeelega
  • Andmetega tehtavate toimingute arv, näiteks valige ja filtreerige.

Kuidas luua Spark SQL Dataframe?

Enne andmeraami loomise viiside mõistmist on oluline mõista veel ühte kontseptsiooni, mille abil säderakendused loovad andmeraami erinevatest allikatest. Seda mõistet nimetatakse sädemeks ja see on sisenemispunkt kogu sädemefunktsioonile. Varem pidime sparkConfi, sparkContext või sqlContext eraldi looma, kuid koos sädemissessiooniga on kõik kapseldatud ühe seansi alla, kus säde toimib sädetundmise objektina.

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

Andmeraami loomise viisid

  1. Olemasolevast TTA-st

Andmeraami saab RDD kaudu luua kahel viisil. Üks viis on peegelduse kasutamine, mis järeldab andmete skeemi automaatselt, teine ​​lähenemisviis on skeemi loomine programmiliselt ja rakendamine RDD-le.

  • Skeemile viidates

Lihtne viis RDD teisendamiseks Dataframe'iks on siis, kui see sisaldab Spark'i SQL-liidese tõttu juhtumiklasse. Juhtumiklassidele edastatud argumendid tuuakse peegelduse abil ja sellest saab tabeli veergude nimi. Järjestusi ja massiive saab määratleda ka juhtumiklassides. Juhtumiklassi abil loodavat RDD-d saab kaudselt teisendada andmeraamiks, kasutades meetodit 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()

Luuakse andmeraami sõiduk ja seda saab registreerida tabelina, mille vastu saab täita sql-avaldusi.

  • Täpsustades skeemi programmiliselt

Võib esineda juhtumeid, kus me pole skeemist eelnevalt teadlikud ega stsenaariume, kus juhtumiklassid ei või võtta rohkem kui 22 välja. Sellistes tingimustes kasutame skeemi loomist programmiliselt. Esiteks luuakse algsest RDD-st ridade RDD, st teisendades rdd-objekti rdd (t) -st rdd (reas). Seejärel looge skeem, kasutades objekte StructType (Table) ja StructField (Field). Seda skeemi rakendatakse ridade RDD-le, kasutades meetodit createDataFrame, mis sarnaneb varem loodud rdd (rea) struktuuriga.

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. Andmeallikate kaudu

Spark võimaldab andmeraamide loomist mitme allika kaudu, näiteks taru, json, parkett, csv ja tekstifailid, mida saab kasutada ka andmeraamide loomiseks.

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'i toimingud

Kuna andmeid hoitakse koos skeemiga tabeli vormingus, on andmeraamidel võimalik teha mitmeid toiminguid. See võimaldab mitu toimingut, mida saab andmeraamides sisalduvate andmetega teha.

Mõelge, et fail on andmeraam, mis on loodud csv-failist, millel on kaks veergu - FullName ja AgePerPA

  1. printSchema () - skeemi struktuuri kuvamiseks

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

  1. vali - sarnane, et valida avaldus SQL-is, esitleb andmeid, nagu mainitud avalduses.

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

  1. Filter - filtreeritud andmete kuvamiseks andmeraamistikust. Käskluses nimetatud tingimus

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

  1. GroupBy - väärtuste rühmitamiseks

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

  1. show () - andmeraami sisu kuvamiseks

file.show()

Piirangud

Ehkki andmeraamide abil saate SQL-i süntaksi tõrke koguda ise, ei suuda see kogu käitusajani ühtegi analüüsiga seotud viga käsitleda. Näiteks kui koodis viidatakse olematule veeru nimele, siis seda ei märgata kogu käitusajani. See tooks kaasa arendaja aja ja projekti kulude raiskamise.

Järeldus - Spark SQL Dataframe

See artikkel annab üldpildi (vajadus, loomine, piirangud) Spark SQL andmeraami API-st. Dataframe API-de populaarsuse tõttu on Spark SQL endiselt üks laialt levinud teeke. Nii nagu RDD, pakub see selliseid funktsioone nagu rikke taluvus, laisk hindamine, mälusisene töötlemine ja mõned täiendavad eelised. Seda saab määratleda kui andmeid, mis on jaotunud klastrisse tabelina. Seega on andmeraamiga seotud skeem ja seda saab sädeseansi objekti kaudu luua mitme allika kaudu.

Soovitatavad artiklid

See on Spark SQL Dataframe'i juhend. Siin käsitleme andmeraami loomise viise DataFrame'i toimingute ja piirangutega. Lisateabe saamiseks võite vaadata ka järgmist artiklit -

  1. Spark Shelli käsud
  2. Kursorid SQL-is
  3. SQL-i piirangud
  4. Andmebaas SQL-is
  5. Spark SQL-i liitumiste tüübid (näited)
  6. Unixi kesta käskude loendi juhend

Kategooria: