Spark SQL Dataframe

Az RDD-hez hasonló adatkeret absztrakció biztosítva van a Spark SQL könyvtárban található strukturált adatokhoz. Ez egy elosztott adatgyűjtemény, amely táblának tekinthető egy relációs adatbázisban, amelyhez csatolt séma tartozik. Megnevezhető úgy is, mint a megnevezett oszlopok gyűjteménye. A Spark SQL a Spark veremben elérhető könyvtárak egyike, amely információkat tartalmaz az adatok szerkezetéről és számításáról. Ezt a kiegészítő információt használják az optimalizáláshoz. Az adatkeret magában foglalja az RDD előnyeit az optimalizálási technikákkal együtt, és ez az API elérhető Python, R, Scala és Java nyelven.

Az adatkeretet generáló különböző források a következők:

  • Meglévő RDD
  • Strukturált adatfájlok és adatbázisok
  • Kaptár táblázatok

Az adatkeret szükségessége

A spark közösség mindig igyekezett struktúrát hozni az adatokhoz, ahol a spark SQL-adatkeretek az ebben az irányban tett lépések. A szikra, az RDD kezdeti API-ja nem strukturált adatokra vonatkozik, ahol a számítások és az adatok egyaránt átlátszatlanok. Így volt szükség egy olyan API létrehozására, amely további optimalizálási előnyöket tud biztosítani. Az alábbiakban felsoroljuk azokat a néhány követelményt, amelyek képezték az adatkeret alapját

  • Folyamat strukturált és félig adatait
  • Több adatforrás
  • Integráció több programozási nyelvvel
  • Az adatokkal végrehajtható műveletek száma, mint például a Kiválasztás és szűrés.

Hogyan hozhatunk létre Spark SQL Dataframe-t?

Az adatkeret létrehozásának módjainak megértése előtt fontos megérteni egy másik koncepciót, amellyel a szikra alkalmazások különféle forrásokból hoznak létre adatkeretet. Ezt a fogalmat szikramenetnek nevezik, és az a szikra összes funkciójának belépési pontja. Korábban a sparkConf-ot, a sparkContext-et vagy az sqlContext-et külön-külön kellett létrehoznunk, de a szikramenettel mindegyik egy szekcióba van beillesztve, ahol a szikra szikrázó objektumként működik.

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

Az adatkeret létrehozásának módjai

  1. A meglévő RDD-ből

Két módon lehet Dataframe-t létrehozni az RDD-n keresztül. Az egyik módszer a reflexió használata, amely automatikusan következteti az adatok sémáját, a másik módszer egy séma létrehozása programozottan, majd az RDD-re történő alkalmazás.

  • A rendszer bevezetésével

Az RDD Dataframe-ba való konvertálásának egyszerű módja az, ha az esetosztályokat tartalmaz a Spark SQL felületének köszönhetően. Az esetosztályokhoz továbbított érveket reflexióval vonjuk le, és ez lesz a tábla oszlopának neve. Szekvenciák és tömbök is meghatározhatók esettanulmányokban. Az esetosztály alapján létrehozott RDD implicit módon átalakítható Dataframe-ként a toDF () módszerrel.

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

Létrejön egy adatkeretű jármű, és táblázatokként regisztrálhatóak, amelyekkel az SQL utasítások végrehajthatók.

  • A séma programozott meghatározásával

Előfordulhatnak olyan esetek, amikor korábban nem ismerjük a sémát vagy a forgatókönyveket, amikor az esetosztályok nem haladhatják meg a 22 mezőt. Ilyen körülmények között a séma programozott létrehozásának módszerét alkalmazzuk. Először sorok RDD-jét hozzák létre az eredeti RDD-ből, azaz konvertálják az rdd objektumot rdd (t) -ről rdd-re (sor). Ezután hozzon létre egy sémát a StructType (Table) és a StructField (Field) objektumokkal. Ezt a sémát a sorok RDD-jére alkalmazzuk a createDataFrame metódussal, amely hasonló az korábban létrehozott rdd (sor) struktúrájához.

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. Adatforrásokon keresztül

A Spark lehetővé teszi adatkeretek létrehozását több forrás, például kaptár, json, parketta, csv és szöveges fájlok révén, amelyek szintén felhasználhatók adatkeretek létrehozására.

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 műveletek

Mivel az adatokat táblázatos formátumban tárolják a sémával együtt, számos művelet végrehajtható az adatkeretekben. Ez lehetővé teszi több művelet végrehajtását az adatkeretek adataival.

Fontolja meg a fájl egy olyan adatkeret, amelyet csv fájlból hoztak létre, két oszloppal - FullName és AgePerPA

  1. printSchema () - A séma szerkezetének megtekintése

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

  1. Kiválasztás - hasonlóan az SQL utasítás kiválasztásához, bemutatja az adatokat, ahogy azt a Kiválasztás utasítás tartalmazza.

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

  1. Szűrő - A szűrt adatok megtekintése az adatkeretből. A parancsban említett feltétel

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

  1. GroupBy - az értékek csoportosítása

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

  1. show () - az adatkeret tartalmának megjelenítéséhez

file.show()

korlátozások

Noha az adatkeretekkel az SQL szintaxis hibát észlelheti a fordítás idején, nem képes az elemzéshez kapcsolódó hibákat a futásidejig kezelni. Például, ha egy nem létező oszlopnevet hivatkoznak a kódban, akkor a futásidőig nem veszik észre. Ez a fejlesztő idő- és projektköltségeinek pazarlásához vezetne.

Következtetés - Spark SQL Dataframe

Ez a cikk átfogó képet nyújt (szükségesség, létrehozás, korlátozások) a Spark SQL dataframe API -járól. Az dataframe API-k népszerűsége miatt a Spark SQL továbbra is az egyik legszélesebb körben használt könyvtár. Csakúgy, mint az RDD, olyan funkciókkal rendelkezik, mint a hibatűrés, a lusta kiértékelés, a memóriában történő feldolgozás, valamint néhány további előnye. Ez a csoportonként táblázatos formában elosztott adatként határozható meg. Így az adatkerethez egy séma kapcsolódik, és több forrásból létrehozható egy szikra-munkamenet objektumon keresztül.

Ajánlott cikkek

Ez egy útmutató a Spark SQL Dataframe-hez. Itt tárgyaljuk az adatkeret létrehozásának módjait a DataFrame műveletekkel és korlátozásokkal. A következő cikkben további információkat is megnézhet -

  1. Spark Shell parancsok
  2. Kurzorok az SQL-ben
  3. SQL korlátozások
  4. Adatbázis SQL-ben
  5. Csatlakozás típusai a Spark SQL-ben (példák)
  6. Útmutató az Unix Shell parancsok listájához

Kategória: