Bevezetés a Spark adatkészletbe
Az adatkészlet a Spark SQL adatstruktúrája, amely biztosítja a fordítási idő típusú biztonságot, az objektum-orientált felületet, valamint a Spark SQL optimalizálását.
Fogalmi szempontból ez egy memóriában lévő táblázatos struktúra, sorokkal és oszlopokkal, amely több csomóponton oszlik meg, például az Dataframe.
Ez a Dataframe kiterjesztése. Az adatkészlet és a DataFrame közötti fő különbség az, hogy az adatkészletek erősen gépeltek.
(Adatkészlet) = (Dataframe + Compile-time típusú biztonság)
Az adatkészletet kísérleti API-ként adták ki a Spark 1.6-ban. Mind a Dataframe, mind az adatkészlet egyesül a Spark 2.0 verzióban, és a Dataframe álnévvé válik a Dataset (Row) számára.
Adatkeret = adatkészlet (sor)
Miért van szükségünk a Spark adatkészletre?
Ahhoz, hogy egyértelműen megértsük az adatkészletet, egy kicsit a szikra és annak fejlődésének történetével kell kezdnünk.
Az RDD a Spark magja. Az SQL ihlette és a dolgok megkönnyítése érdekében a Dataframe az RDD tetején jött létre. Az Dataframe megegyezik egy relációs adatbázisban lévő táblával vagy a Pythonban lévő DataFrame-rel.
Az RDD biztosítja a fordítási idő típusú biztonságot, de az RDD-ben nincs automatikus optimalizálás.
A Dataframe automatikus optimalizálást biztosít, de hiányzik a fordítási időtípus biztonság.
Az adatkészlet hozzáadódik az Dataframe kiterjesztéséhez. Az adatkészlet egyesíti mind az RDD (azaz a fordítási idő típusú biztonság), mind a Dataframe (azaz a Spark SQL automatikus optimalizálása) szolgáltatásait.
(RDD (Spark 1.0)) -> (Dataframe (Spark1.3)) -> (Adatkészlet (Spark1.6))
Mivel a Dataset rendelkezik a fordítási idő biztonságával, ezért csak összeállított nyelven (Java & Scala) támogatott, de nem értelmezett nyelven (R & Python). A Spark Dataframe API azonban mind a négy nyelven (Java, Scala, Python és R) elérhető, amelyet a Spark támogat.
A nyelvet a Spark támogatja | Dataframe API | Adatkészlet API |
Összeállított nyelv (Java és Scala) | IGEN | IGEN |
Tolmácsolt nyelv (R & Python) | IGEN | NEM |
Hogyan lehet Spark adatkészletet létrehozni?
Az adatkészlet használatának alapja többféle módon is létrehozható
1. Először hozzon létre SparkSession-t
A SparkSession egy belépési pont egy szikra alkalmazáshoz, amely lehetővé teszi a mögöttes Spark funkciókkal való interakciót és a Spark programozását DataFrame és Dataset API-kkal.
val spark = SparkSession
.builder()
.appName("SparkDatasetExample")
.enableHiveSupport()
.getOrCreate()
- Adatkészlet létrehozása olyan alapvető adatstruktúrával, mint a Range, Sequence, List, stb:
A Range használata
A szekvencia használata
A Lista használata
- Adatkészlet létrehozása az esetosztályok sorrendjével .toDS () módszer meghívásával:
- Adatkészlet létrehozása az RDD-ből .toDS () használatával:
- Adatkészlet létrehozása a Dataframe fájlból a Case Class használatával:
- Adatkészlet létrehozása a Dataframe fájlból Tuples használatával:
2. Műveletek a Spark adatkészleten
- Szószám-példa
- A Spark adatkészlet konvertálása Dataframe-ba
A Spark adatkészletet Datafame-ba konvertálhatjuk és a Dataframe API-kat az alábbiak szerint használhatjuk:
A Spark Dataset jellemzői
- Típus biztonság
Az adatkészlet biztosítja a fordítási idő típusú biztonságot. Ez azt jelenti, hogy a szintaxist, valamint az alkalmazás elemzési hibáit a futtatás előtt ellenőrzik a fordításkor.
- Állandóság
Az adatkészlet változatlan is, mint például az RDD és a Dataframe. Ez azt jelenti, hogy nem változtathatjuk meg a létrehozott adatkészletet. Minden alkalommal, amikor új adatkészletet hoz létre, amikor bármilyen átalakítást alkalmaz az adatkészletre.
- Séma
Az adatkészlet egy memóriában lévő táblázatos struktúra, amely sorokkal és oszlopokkal rendelkezik.
- Teljesítmény és optimalizálás
A Dataframe-hez hasonlóan az adatkészlet a Catalyst Optimization segítségével is optimalizált logikai és fizikai lekérdezési tervet készít.
- Programozási nyelv
Az api adatkészlet csak a Java és Scala nyelven jelenik meg, amelyek fordított nyelvekben vannak, de a Pythonban, amely értelmezett nyelv.
- Lusta értékelés
Mint az RDD és a Dataframe, az adatkészlet a lusta értékelést is elvégzi. Ez azt jelenti, hogy a számítás csak akkor történik, amikor a műveletet végrehajtják. Spark csak az átalakulási szakaszban tervez.
- Sorosítás és szemétgyűjtés
A Spark adatkészlet nem használ szokásos sorosítókat (Kryo vagy Java sorosítás). Ehelyett a Tungsten gyors memóriába épített kódolóit használja, amelyek megértik az adatok belső felépítését és hatékonyan képesek az objektumokat belső bináris tárolóvá alakítani. A halmozódó adatsorozatot használja a Tungsten kódolóval, így nincs szükség szemétgyűjtésre.
Következtetés
Az adatkészlet a legjobb mind az RDD, mind a Dataframe közül. Az RDD biztosítja a fordítási idő típusú biztonságot, de nincs automatikus optimalizálás. A Dataframe automatikus optimalizálást biztosít, de hiányzik a fordítási időtípus biztonság. Az adatkészlet biztosítja mind a fordítási idő típusú biztonságot, mind az automatikus optimalizálást. Ezért az adatkészlet a legjobb választás a Java vagy Scala használatával rendelkező Spark fejlesztők számára.
Ajánlott cikkek
Ez egy útmutató a Spark Dataset-hez. Itt tárgyaljuk, hogyan lehet Spark adatkészletet létrehozni többféle módon, példákkal és szolgáltatásokkal. Lehet, hogy megnézi a következő cikkeket is, ha többet szeretne megtudni -
- Spark Shell parancsok
- Spark Interjú Kérdések
- Karrier a Sparkban
- Spark streaming
- Különböző műveletek a Tuples-szel kapcsolatban
- Spark SQL Dataframe
- Csatlakozás típusai a Spark SQL-ben (példák)
- Útmutató az Unix Shell parancsok listájához
- A szikra 6 legfontosabb alkotóeleme