Bevezetés a Spark RDD-jébe

A RDD, amely a rugalmas és elosztott adatkészletet jelenti, a Spark egyik legfontosabb fogalma. Ez egy írásvédett rekordok gyűjteménye, amelyet partíciókra osztanak és fürtönként csomópontokra osztanak. Műveletekkel átalakítható más RDD-re, és miután létrehozták az RDD-t, nem lehet megváltoztatni, hanem egy új RDD-t hoznak létre.

Az egyik fontos jellemző, amelyen keresztül a Spark legyőzte a Hadoop korlátozásait, az RDD-n keresztül, mivel az adatok megismétlése helyett a Resilient Distributed Datasets (RDD) az adatokat egy fürt csomópontjain keresztül tartja fenn, és az adatokat visszaválasztja a vonal gráf segítségével. A Hadoop-ban az adatokat redundánsan tárolták azon gépek között, amelyek a hibatűrés tulajdonságát biztosították. Így az RDD alapvető absztrakció, amelyet a Spark biztosít az elosztott adatok és számítások elvégzésére.

Az RDD létrehozásának különféle módjai vannak

  • Külső adatkészlet betöltése
  • Az adatok továbbítása a párhuzamosítási módszerrel
  • Meglévő RDD átalakításával

Nézzük meg mindegyiket részletesen, de ezt megelőzően be kell állítanunk egy szikrahéjat, amely a szikra vezérlőprogramja. Ebben a cikkben a kód sorait beillesztettük a scala-ba. Az RDD-k bármilyen típusú Python, Java vagy Scala objektumot tartalmazhatnak, beleértve a felhasználó által meghatározott osztályokat. Az alábbiakban bemutatjuk a szikra-héj elindításához követendő lépéseket.

A Spark-Shell indítása

1. lépés: Töltse le és bontsa ki a szikra. Töltse le a szikra aktuális verzióját a hivatalos webhelyről. Csomagolja ki a letöltött fájlt a rendszer bármely helyére.

2. lépés: A Scala telepítése

  • Töltse le a scala a scala lang.org webhelyről
  • Telepítse a scala-t
  • Állítsa be a SCALA_HOME környezeti változót, és állítsa a PATH változót a scala bin könyvtárába.

3. lépés: Indítsa el a szikrahéjat. Nyissa meg a parancssort és keresse meg a szikra tartályt. Végrehajt-szikra-héj.

Az RDD létrehozásának különféle módjai

1. Külső adatkészlet betöltése

A SparkContext textFile módszerét bármilyen forrásból töltik fel, amely RDD-t hoz létre. A Spark a források széles skáláját támogatja, ahonnan az adatokat le lehet vonni, például Hadoop, HBase, Amazon S3 stb. Az egyik adatforrás egy szöveges fájl, amelyet itt tárgyaltunk. A spark scala API a szöveges fájlokon kívül más adatformátumokat is támogat, mint például a WholeTextFiles, a szekvenciafájl, a Hadoop RDF és még sok más.

Példa

val file = sc.textFile("/path/textFile.txt"") // relative path

A fájl nevű változó egy RDD, amelyet a helyi rendszer szöveges fájljából hoztak létre. A szikra-héjban a szikra kontextusobjektum (sc) már létrehozásra került, és a szikra eléréséhez használják. A TextFile az org.apache.spark.SparkContext osztály olyan módszere, amely beolvassa a szövegfájlt a HDFS-ből, a helyi fájlrendszerből vagy bármely Hadoop által támogatott fájlrendszer URI-ból, és visszaküldi azt Strings RDD-ként. Így ennek a módszernek a bemenete egy URI, és az adatokat a csomópontok között megosztja.

2. Az adatok továbbítása a párhuzamosítási módszerrel

Az RDD-k létrehozásának másik módja egy meglévő memóriagyűjtemény átvétele és átadása a SparkContext módszer párhuzamosítására. Míg a szikra tanulása az RDD-k létrehozásának ilyen módja nagyon hasznos, mivel létrehozhatjuk a RDD-ket a shellben és a műveleteket is elvégezhetjük. A tesztelésen és a prototípusokon kívül alig használják fel, mivel megköveteli, hogy az összes adat elérhető legyen a helyi gépen. A párhuzamosítás egyik fontos pontja a partíciók száma, amelyekbe a gyűjtemény be van osztva. A számot (partíciókat) második paraméterként átadhatjuk a párhuzamosítási módszerben, és ha a számot nem adjuk meg, akkor a Spark a klaszter alapján dönt.

  • Számos partíció nélkül:

val sample = sc.parallelize(Array(1, 2, 3, 4, 5))

  • Számos partícióval:

val sample = sc.parallelize(List(1, 2, 3, 4, 5), 3)

3. A meglévő RDD átalakításával

Kétféle művelet hajtható végre az RDD-n keresztül.

  1. transzformációk
  2. Hozzászólások

Az átalakítások olyan RDD-műveletek, amelyek újabb RDD-t hoznak létre, míg a műveletek olyan műveletek, amelyek végső értéket adnak vissza az illesztőprogram-programhoz vagy adatokat írnak egy külső tárolórendszerbe. A térkép és a szűrő néhány átalakítási művelet. Vegyünk egy példát néhány sor kiszűrésére egy szöveges fájlból. Kezdetben egy RDD-t a szöveges fájl betöltésével hoznak létre. Ezután alkalmazunk egy szűrőfunkciót, amely kiszűri a sorok sorát a szövegfájlból. Az eredmény RDD lesz. A szűrés nem változtatja meg a meglévő bemeneti RDD-t. Ehelyett egy mutatót ad vissza egy teljesen új RDD-hez, amely a piros hiba. A bemeneti RDD-t továbbra is felhasználhatjuk más számításokhoz.

val inputRDD = sc.textFile("log.txt")val errorsRDD = inputRDD.filter(line => line.contains("error"))

Az alábbi példa ugyanazt az átalakítási koncepciót mutatja a térkép funkcióhoz. Az eredmény az RDD, amelyet a Térkép funkció miatt hoztak létre. A térképművelet során meghatározzák a logikát, és az adott logikát az adatkészlet összes elemére alkalmazzák.

val inputRDD = sc.parallelize(List(10, 9, 8, 7, 6, 5))val resultRDD = inputRDD.map(y => y * y)println(resultRDD.collect().mkString(", "))

Fontos szem előtt tartani

  • A jelenleg elérhető keretek közül az Apache szikra a legújabb, és egyedülálló tulajdonságai és egyszerű megközelítése miatt egyre népszerűbb. Ez kiküszöböli a Hadoop által okozott összes hátrányt, valamint fenntartja a MapReduce hibatűrő és skálázható tulajdonságát. E célok elérése érdekében a gyújtóplatform bevezeti az RDD koncepcióját.
  • Elsődlegesen három módon lehet RDD-t létrehozni, ahol a legalapvetőbb az adatkészlet betöltésekor.
  • A párhuzamosítási módszer széles körben csak tesztelési és tanulási célokat szolgál.
  • Egy transzformációs művelet RDD-t eredményez.

Ajánlott cikkek

Ez egy útmutató a Spark RDD-jéhez. Itt is megvitattuk az RDD létrehozásának különféle módjait, a Spark-Shell elindításának fontos kérdéseiről. Megnézheti az adott cikkeket is, hogy többet megtudjon-

  1. Mi az RDD?
  2. A Spark telepítése
  3. Spark streaming
  4. Spark DataFrame
  5. Mi a Spark Shell parancsok?
  6. Útmutató az Unix Shell parancsok listájához

Kategória: