Wprowadzenie do RDD w Spark

RDD, czyli Resilient Distributed Dataset, jest jedną z najważniejszych koncepcji w Spark. Jest to zbiór rekordów tylko do odczytu, który jest dzielony na partycje i dystrybuowany między węzłami w klastrze. Można go przekształcić w inne RDD za pomocą operacji, a po utworzeniu RDD nie można go zmienić, zamiast tego utworzony zostanie nowy RDD.

Jedną ważną cechą, dzięki której Spark pokonał ograniczenia Hadoop, jest RDD, ponieważ zamiast replikować dane, Resilient Distributed Datasets (RDD) utrzymuje dane w węzłach w klastrze i odzyskuje dane za pomocą wykresu linii. W Hadoop dane były nadmiarowo przechowywane wśród maszyn, które zapewniały właściwość odporności na uszkodzenia. Tak więc RDD jest podstawową abstrakcją dostarczaną przez Spark dla rozproszonych danych i obliczeń.

Istnieją różne sposoby tworzenia RDD

  • Ładowanie zewnętrznego zestawu danych
  • Przekazywanie danych metodą Parallelize
  • Przekształcając istniejący RDD

Omówmy szczegółowo każdy z nich, ale wcześniej musimy ustawić iskierkę, która jest programem sterownika iskry. W tym artykule umieściliśmy wiersze kodu w scala. RDD mogą mieć dowolny typ obiektów Python, Java lub Scala, w tym klasy zdefiniowane przez użytkownika. Poniżej znajdują się kroki, które należy wykonać, aby uruchomić iskiernik.

Uruchamianie Spark-Shell

Krok 1: Pobierz i rozpakuj Spark. Pobierz aktualną wersję Spark z oficjalnej strony internetowej. Rozpakuj pobrany plik do dowolnej lokalizacji w systemie.

Krok 2: Skonfiguruj Scalę

  • Pobierz scala ze scala lang.org
  • Zainstaluj Scala
  • Ustaw zmienną środowiskową SCALA_HOME i ustaw zmienną PATH na katalog bin scala.

Krok 3: Uruchom iskiernik. Otwórz wiersz polecenia i przejdź do folderu bin iskry. Wykonaj - iskiernik.

Różne sposoby tworzenia RDD

1. Ładowanie zewnętrznego zestawu danych

Metoda textFile SparkContext służy do ładowania danych z dowolnego źródła, które z kolei tworzy RDD. Spark obsługuje szeroką gamę źródeł, z których można pobierać dane, takich jak Hadoop, HBase, Amazon S3 itp. Jednym ze źródeł danych jest plik tekstowy, który omówiliśmy tutaj. Oprócz plików tekstowych interfejs API Scala Spark obsługuje także inne formaty danych, takie jak WholeTextFiles, plik sekwencji, Hadoop RDF i wiele innych.

Przykład

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

Zmienna o nazwie file to RDD, utworzona z pliku tekstowego w systemie lokalnym. W iskrze powłoki obiekt kontekstowy iskry (sc) został już utworzony i służy do uzyskiwania dostępu do iskry. TextFile to metoda klasy org.apache.spark.SparkContext, która odczytuje plik tekstowy z HDFS, lokalnego systemu plików lub dowolnego identyfikatora URI systemu plików obsługiwanego przez Hadoop i zwraca go jako RDD ciągów. Zatem dane wejściowe dla tej metody to identyfikator URI, który dzieli dane między węzły.

2. Przekazywanie danych metodą Parallelize

Innym sposobem tworzenia RDD jest pobranie istniejącej kolekcji w pamięci i przekazanie jej do równoległej metody SparkContext. Podczas uczenia się iskra ten sposób tworzenia RDD jest bardzo przydatny, ponieważ możemy tworzyć RDD w powłoce i wykonywać operacje. Jest rzadko używany poza testowaniem i prototypowaniem, ponieważ wymaga, aby wszystkie dane były dostępne na lokalnej maszynie. Ważną kwestią dotyczącą równoległości jest liczba partycji, na które podzielona jest kolekcja. Możemy przekazać liczbę (partycje) jako drugi parametr w metodzie równoległej, a jeśli liczba nie zostanie określona, ​​Spark zdecyduje na podstawie klastra.

  • Bez wielu partycji:

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

  • Z wieloma partycjami:

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

3. Przekształcając istniejący RDD

Istnieją dwa rodzaje operacji wykonywanych za pomocą RDD.

  1. Transformacje
  2. działania

Transformacje to operacje na RDD, które powodują utworzenie innego RDD, podczas gdy akcje to operacje, które zwracają ostateczną wartość do programu sterownika lub zapisują dane do zewnętrznego systemu pamięci. Mapa i filtr to niektóre operacje transformacji. Rozważ przykład odfiltrowania niektórych wierszy z pliku tekstowego. Początkowo RDD jest tworzony przez załadowanie pliku tekstowego. Następnie stosujemy funkcję filtrowania, która odfiltruje zestaw wierszy z pliku tekstowego. Rezultatem będzie również RDD. Operacja filtrowania nie zmienia istniejącego wejściowego RDD. Zamiast tego zwraca wskaźnik do całkowicie nowego RDD, który jest czerwonymi błędami. Nadal możemy używać wejściowego RDD do innych obliczeń.

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

Poniższy przykład pokazuje tę samą koncepcję transformacji dla funkcji mapy. Rezultatem jest RDD, który został wygenerowany dzięki funkcji Map. W operacji mapowania logika zostanie zdefiniowana i ta szczególna logika zostanie zastosowana do wszystkich elementów zestawu danych.

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

Ważne punkty do zapamiętania

  • Spośród wszystkich obecnie dostępnych frameworów, iskra Apache jest najnowsza i zyskuje popularność ze względu na swoje unikalne funkcje i proste podejście. Eliminuje wszystkie wady Hadoop, a także zachowuje tolerancję błędów i właściwość skalowalności MapReduce. Aby osiągnąć te cele platforma Spark wprowadza koncepcję RDD.
  • Istnieją głównie trzy sposoby tworzenia RDD, przy czym najbardziej podstawowym jest ładowanie zestawu danych.
  • Metoda równoległa jest szeroko stosowana tylko do celów testowania i uczenia się.
  • Operacja transformacji spowodowałaby RDD.

Polecane artykuły

To był przewodnik po RDD w Spark. W tym miejscu omówiliśmy także różne sposoby tworzenia RDD, jak uruchomić Spark-Shell z ważnymi punktami. Możesz również przejrzeć nasze podane artykuły, aby dowiedzieć się więcej-

  1. Co to jest RDD?
  2. Jak zainstalować Spark
  3. Spark Streaming
  4. Spark DataFrame
  5. Co to są polecenia Spark Shell?
  6. Przewodnik po liście poleceń powłoki Unix

Kategoria: