Úvod do RDD v programu Spark

RDD, který je zkratkou Resilient Distributed Dataset, je jedním z nejdůležitějších konceptů v programu Spark. Je to kolekce záznamů jen pro čtení, která je rozdělena a distribuována mezi uzly v klastru. To může být transformováno do nějakého jiného RDD přes operace a jakmile RDD je vytvořen to nemůže být měněno spíše nový RDD bude vytvořen.

Jednou z důležitých vlastností, kterou Spark překonal omezení Hadoop, je přes RDD, protože spíše než replikace dat, Resilient Distributed Datasets (RDD) udržuje data napříč uzly v klastru a obnoví zpět data pomocí grafu linií. V Hadoopu byla data redundantně uložena mezi stroji, které poskytovaly vlastnost odolnosti proti chybám. RDD je tedy základní abstrakce poskytovaná Sparkem pro distribuovaná data a výpočet.

Různé způsoby vytváření RDD jsou

  • Načítání externí sady dat
  • Předávání dat metodou Parallelize
  • Transformací existujícího RDD

Pojďme si podrobně pohovořit o každém z nich, ale předtím musíme vytvořit jiskrovou skořápku, což je řidičský program jiskry. V tomto článku jsme do Scala zahrnuli řádky kódu. RDD mohou mít jakýkoli typ objektů Python, Java nebo Scala, včetně tříd definovaných uživatelem. Níže jsou tedy uvedeny kroky, které je třeba dodržovat při spouštění jisker.

Spuštění Spark-Shell

Krok 1: Stáhněte a rozbalte jiskru. Stáhněte si aktuální verzi jiskry z oficiálních webových stránek. Rozbalte stažený soubor na libovolné místo ve vašem systému.

Krok 2: Nastavení Scala

  • Stáhněte si scala z scala lang.org
  • Nainstalujte Scala
  • Nastavit proměnnou prostředí SCALA_HOME a nastavit proměnnou PATH do adresáře bin Scala.

Krok 3: Spusťte jiskrovou skořápku. Otevřete příkazový řádek a přejděte do složky s jiskrou. Provedení - jiskra.

Různé způsoby vytváření RDD

1. Načítání externí sady dat

Metoda textFile SparkContext se používá k načtení dat z jakéhokoli zdroje, který zase vytvoří RDD. Spark podporuje širokou škálu zdrojů, ze kterých lze data získat, jako je Hadoop, HBase, Amazon S3 atd. Jedním zdrojem dat je textový soubor, o kterém jsme zde diskutovali. Kromě textových souborů iskra scala API také podporuje další datové formáty, jako jsou fullTextFiles, sekvenční soubor, Hadoop RDF a mnoho dalších.

Příklad

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

Proměnná nazvaná file je RDD, vytvořená z textového souboru v místním systému. V jiskrové skořápce již byl vytvořen objekt kontextu jisker (sc) a používá se k přístupu k jiskře. TextFile je metoda třídy org.apache.spark.SparkContext, která čte textový soubor z HDFS, lokálního systému souborů nebo libovolného URI souborového systému podporovaného Hadoop a vrací jej jako RDD řetězce. Vstupem pro tuto metodu je tedy URI a rozděluje data přes uzly.

2. Předávání dat metodou Parallelize

Dalším způsobem vytváření RDD je odebrání existující kolekce v paměti a její předání k paralelizaci metody SparkContext. Při učení jiskry je tento způsob vytváření RDD velmi užitečný, protože můžeme vytvářet RDD ve shellu a provádět také operace. Sotva se používá mimo testování a prototypování, protože vyžaduje, aby všechna data byla k dispozici na místním počítači. Jedním důležitým bodem o paralelizaci je počet oddílů, do kterých je kolekce rozdělena. Můžeme předat číslo (oddíly) jako druhý parametr v metodě paralelizace a pokud není číslo zadáno, rozhodne se Spark na základě klastru.

  • Bez několika oddílů:

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

  • S několika oddíly:

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

3. Transformací existujícího RDD

Přes RDD jsou prováděny dva druhy operací.

  1. Transformace
  2. Akce

Transformace jsou operace na RDD, které mají za následek vytvoření dalšího RDD, zatímco akce jsou operace, které vracejí konečnou hodnotu programu ovladače nebo zapisují data do externího úložného systému. Mapa a filtr jsou některé transformační operace. Zvažte příklad odfiltrování některých řádků z textového souboru. Zpočátku se RDD vytvoří načtením textového souboru. Pak použijeme funkci filtru, která odfiltruje sadu řádků z textového souboru. Výsledkem bude také RDD. Operace filtru nemění existující vstupní RDD. Místo toho vrací ukazatel na zcela nový RDD, což jsou chyby červené. Stále můžeme použít vstupní RDD pro další výpočty.

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

Níže uvedený příklad ukazuje stejný koncept transformace pro funkci mapy. Výsledkem je RDD, který byl vygenerován díky funkci Map. V mapové operaci bude definována logika a tato konkrétní logika bude použita na všechny prvky datové sady.

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 k zapamatování

  • Ze všech dostupných rámců je jiskra Apache nejnovější a získává na popularitě díky svým jedinečným vlastnostem a jednoduchému přístupu. Odstraňuje všechny nevýhody, které představuje Hadoop, jakož i zachovává odolnost a škálovatelnost MapReduce. Pro dosažení těchto cílů představuje platforma jisker koncept RDD.
  • Existují hlavně tři způsoby, jak lze vytvořit RDD, kde nejzákladnější je, když načítáme datový soubor.
  • Metoda paralelizace je široce pouze pro účely testování a učení.
  • Transformační operace by vyústila v RDD.

Doporučené články

Toto byl průvodce RDD ve Sparku. Zde jsme také diskutovali různé způsoby vytváření RDD, jak spustit Spark-Shell s důležitými body. Další informace naleznete také v našich článcích.

  1. Co je to RDD?
  2. Jak nainstalovat Spark
  3. Spark Streaming
  4. Spark DataFrame
  5. Co jsou příkazy Spark Shell?
  6. Průvodce seznamem unixových příkazů shellu

Kategorie: