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.
- transzformációk
- 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-
- Mi az RDD?
- A Spark telepítése
- Spark streaming
- Spark DataFrame
- Mi a Spark Shell parancsok?
- Útmutató az Unix Shell parancsok listájához