Spark SQL, DataFrames and Datasets Guide

A Spark SQL egy Spark modul a strukturált adatok feldolgozásához. Az alapvető Spark RDD API-tól eltérően a Spark SQL által biztosított interfészek több információt biztosítanak a Spark számára mind az adatok, mind a végrehajtott számítás szerkezetéről. Belsőleg a Spark SQL ezt a többletinformációt extra optimalizációk elvégzésére használja. A Spark SQL-lel való interakciónak több módja van, beleértve az SQL és a Dataset API-t is. Az eredmény kiszámításakor ugyanazt a végrehajtási motort használja, függetlenül attól, hogy melyik API/nyelvet használja a számítás kifejezésére. Ez az egységesítés azt jelenti, hogy a fejlesztők könnyen válthatnak oda-vissza a különböző API-k között az alapján, hogy melyik biztosítja a legtermészetesebb módot egy adott átalakítás kifejezésére.

Az ezen az oldalon található összes példa a Spark disztribúcióban szereplő mintaadatokat használja, és a spark-shell, pyspark shellben vagy sparkR shellben futtatható.

SQL

A Spark SQL egyik felhasználási módja az SQL-lekérdezések végrehajtása.A Spark SQL arra is használható, hogy adatokat olvasson be egy meglévő Hive telepítésből. Ennek a funkciónak a konfigurálásáról bővebben a Hive táblák című fejezetben olvashat. Ha az SQL futtatása egy másik programozási nyelvből történik, az eredmények Dataset/DataFrame-ként kerülnek visszaadásra.Az SQL felülettel a parancssoron keresztül vagy JDBC/ODBC-n keresztül is kapcsolatba léphet.

Datasets and DataFrame

A Dataset egy elosztott adatgyűjtemény.Az Dataset a Spark 1.6-ban hozzáadott új interfész, amely az RDD-k előnyeit (erős tipizálás, nagy teljesítményű lambda függvények használatának lehetősége) a Spark SQL optimalizált végrehajtási motorjának előnyeivel biztosítja. A Dataset JVM objektumokból építhető fel, majd funkcionális transzformációkkal (map, flatMap, filter stb.) manipulálható.A Dataset API elérhető Scala ésJava nyelven. A Python nem támogatja a Dataset API-t. De a Python dinamikus jellegéből adódóan,a Dataset API számos előnye már elérhető (pl. egy sor mezőjét természetesenrow.columnName név szerint lehet elérni). Az R esetében hasonló a helyzet.

A DataFrame egy megnevezett oszlopokba rendezett Dataset. Fogalmilag egyenértékű egy relációs adatbázisban lévő táblával vagy egy adatkerettel az R/Pythonban, de gazdagabb optimalizációkkal a motorháztető alatt. DataFrame-eket sokféle forrásból lehet létrehozni, például: strukturált adatfájlokból, Hive táblákból, külső adatbázisokból vagy meglévő RDD-kből.A DataFrame API elérhető Scala, Java, Python és R nyelven.Scalában és Javában egy DataFrame-et egy Rows adathalmaz képvisel.A Scala API-ban a DataFrame egyszerűen a Dataset típus aliasát jelenti.Míg a Java API-ban a felhasználóknak a Dataset<Row>-t kell használniuk a DataFrame reprezentálásához.

Ebben a dokumentumban gyakran fogunk a Scala/Java Rows adathalmazokra DataFrame-ként hivatkozni.

Mindenhol DataFrame-ként fogunk hivatkozni.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.