Úvod do RDD v programe Spark

RDD, ktorý je skratkou Resilient Distributed Dataset, je jedným z najdôležitejších konceptov v programe Spark. Je to kolekcia záznamov, ktorá je iba na čítanie a ktorá je rozdelená a distribuovaná cez uzly v klastri. Môže sa transformovať na niektoré ďalšie RDD pomocou operácií a po vytvorení RDD sa už nedá zmeniť, skôr sa vytvorí nový RDD.

Jednou z dôležitých funkcií, prostredníctvom ktorej Spark prekonal obmedzenia Hadoop, je prostredníctvom RDD, pretože namiesto replikovania údajov, Resilient Distributed Datasets (RDD) uchováva údaje v uzloch v klastri a obnoví údaje pomocou grafu línií. V Hadoop boli dáta redundantne uložené medzi strojmi, ktoré zabezpečovali odolnosť proti poruchám. RDD je teda základnou abstrakciou, ktorú poskytuje Spark pre distribuované údaje a výpočet.

Rôzne spôsoby vytvorenia RDD sú

  • Načítava sa externá množina údajov
  • Odovzdávanie údajov metódou Parallelize
  • Transformáciou existujúceho RDD

Poďme diskutovať o každej z nich podrobne, ale pred tým, musíme nastaviť iskru-shell, ktorý je vodičom program iskry. V tomto článku sme do škály zahrnuli riadky kódu. RDD môžu mať akýkoľvek typ objektov Python, Java alebo Scala, vrátane tried definovaných používateľom. Nižšie sú uvedené kroky, ktoré je potrebné dodržať pri odpálení iskry.

Spustenie programu Spark-Shell

Krok 1: Stiahnite a rozbaľte iskru. Stiahnite si aktuálnu verziu iskry z oficiálnych webových stránok. Stiahnutý súbor rozbalte na ľubovoľné miesto v systéme.

Krok 2: Nastavenie Scala

  • Stiahnite si Scala zo Scala lang.org
  • Nainštalujte Scala
  • Nastavte premennú prostredia SCALA_HOME a nastavte premennú PATH do adresára bin Scala.

Krok 3: Spustite sviečku. Otvorte príkazový riadok a prejdite do priečinka s iskrami. Vykonajte iskru.

Rôzne spôsoby vytvárania RDD

1. Načítanie externého súboru údajov

Metóda textFile SparkContext sa používa na načítanie údajov z akéhokoľvek zdroja, ktorý následne vytvára RDD. Spark podporuje širokú škálu zdrojov, z ktorých je možné údaje získať, ako napríklad Hadoop, HBase, Amazon S3 atď. Jedným zdrojom údajov je textový súbor, o ktorom sme tu diskutovali. Okrem textových súborov podporuje program Scala API aj ďalšie formáty údajov, ako sú fullTextFiles, sekvenčný súbor, Hadoop RDF a mnoho ďalších.

príklad

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

Premenná nazývaná súbor je RDD, vytvorená z textového súboru v miestnom systéme. V iskre-škrupine bol už vytvorený objekt kontextu iskry (sc) a používa sa na prístup k iskre. TextFile je metóda triedy org.apache.spark.SparkContext, ktorá číta textový súbor z HDFS, lokálneho súborového systému alebo akéhokoľvek identifikátora URI súborového systému podporovaného Hadoop a vracia ho ako RDD reťazcov. Vstupom pre túto metódu je URI a rozdeľuje údaje cez uzly.

2. Odovzdávanie údajov metódou Parallelize

Ďalším spôsobom vytvorenia RDD je prevzatie existujúcej kolekcie v pamäti a jej odovzdanie na paralelizáciu metódy SparkContext. Pri učení sa iskier je tento spôsob vytvárania RDD veľmi užitočný, pretože dokážeme vytvárať RDD v prostredí shellu a vykonávať aj operácie. Pri testovaní a prototypovaní sa sotva používa, pretože vyžaduje, aby boli všetky údaje dostupné na miestnom počítači. Jedným dôležitým bodom pri paralelizácii je počet oddielov, do ktorých je zbierka rozdelená. Môžeme odovzdať číslo (oddiely) ako druhý parameter v metóde paralelizácie a ak číslo nie je uvedené, Spark sa rozhodne na základe klastra.

  • Bez viacerých oddielov:

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

  • S niekoľkými oddielmi:

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

3. Transformáciou existujúceho RDD

Existujú dva druhy operácií, ktoré sa vykonávajú cez RDD.

  1. transformácia
  2. Akcia

Transformácie sú operácie na RDD, ktoré vedú k vytvoreniu iného RDD, zatiaľ čo akcie sú operácie, ktoré vracajú konečnú hodnotu do programu vodiča alebo zapisujú údaje do externého úložného systému. Mapa a filter sú niektoré transformačné operácie. Zvážte príklad odfiltrovania niektorých riadkov z textového súboru. Najskôr sa vytvorí RDD načítaním textového súboru. Potom použijeme funkciu filtra, ktorá odfiltruje skupinu riadkov z textového súboru. Výsledkom bude tiež RDD. Operácia filtra nemení existujúci vstupný RDD. Namiesto toho vracia ukazovateľ na úplne nový RDD, ktorý má červené chyby. Vstupné RDD môžeme stále používať na ďalšie výpočty.

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

Nižšie uvedený príklad ukazuje rovnaký koncept transformácie pre funkciu mapy. Výsledkom je RDD, ktorý bol vygenerovaný v dôsledku funkcie Mapa. V operácii s mapou sa zadefinuje logika a táto konkrétna logika sa použije na všetky prvky množiny údajov.

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

Dôležité body na zapamätanie

  • Spomedzi všetkých v súčasnosti dostupných rámcov je iskra Apache najnovšia a získava na popularite vďaka svojim jedinečným vlastnostiam a jednoduchému prístupu. Eliminuje všetky nevýhody, ktoré predstavuje Hadoop, ako aj zachováva schopnosť MapReduce odolávať chybám a škálovateľnosť. Na dosiahnutie týchto cieľov predstavuje platforma iskier koncepciu RDD.
  • Existujú hlavne tri spôsoby, ako je možné vytvoriť RDD, kde najzákladnejší je, keď načítame dataset.
  • Metóda paralelizácie sa vo veľkej miere používa iba na účely testovania a vzdelávania.
  • Transformačná operácia by vyústila do RDD.

Odporúčané články

Toto bol sprievodca RDD v programe Spark. Tu sme tiež diskutovali rôzne spôsoby vytvorenia RDD, ako spustiť Spark-Shell s dôležitými bodmi. Ak sa chcete dozvedieť viac, môžete si tiež prečítať naše dané články.

  1. Čo je to RDD?
  2. Ako nainštalovať iskru
  3. Spark Streaming
  4. Spark DataFrame
  5. Čo sú príkazy Spark Shell?
  6. Sprievodca zoznamom príkazov shellu Unix

Kategórie: