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ámogatjaDataframe APIAdatkészlet API
Összeállított nyelv (Java és Scala)IGENIGEN
Tolmácsolt nyelv (R & Python)IGENNEM

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

  1. Szószám-példa

  1. 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

  1. 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.

  1. Á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.

  1. Séma

Az adatkészlet egy memóriában lévő táblázatos struktúra, amely sorokkal és oszlopokkal rendelkezik.

  1. 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.

  1. 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.

  1. 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.

  1. 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 -

  1. Spark Shell parancsok
  2. Spark Interjú Kérdések
  3. Karrier a Sparkban
  4. Spark streaming
  5. Különböző műveletek a Tuples-szel kapcsolatban
  6. Spark SQL Dataframe
  7. Csatlakozás típusai a Spark SQL-ben (példák)
  8. Útmutató az Unix Shell parancsok listájához
  9. A szikra 6 legfontosabb alkotóeleme

Kategória: