Въведение в RDD в Spark

RDD, което означава устойчив разпределен набор от данни, е една от най-важните концепции в Spark. Това е колекция от записи само за четене, която е разделена и разпределена между възлите в клъстер. Той може да се трансформира в някои други RDD чрез операции и след като RDD е създаден, той не може да бъде променен, по-скоро ще бъде създаден нов RDD.

Една важна характеристика, чрез която Spark преодолява ограниченията на Hadoop, е чрез RDD, тъй като вместо да репликира данните, устойчивите разпределени набори от данни (RDD) поддържат данните през възлите в клъстер и ще възстановят обратно данните с помощта на линейната графика. В Hadoop данните бяха съхранени излишно сред машините, които предоставиха свойството на толерантност. По този начин RDD е основна абстракция, предоставена от Spark за разпределени данни и изчисления.

Различните начини за създаване на RDD са

  • Зареждане на външен набор от данни
  • Предаване на данните чрез метод Parallelize
  • Чрез трансформиране на съществуващо RDD

Нека обсъдим подробно всеки от тях, но преди това трябва да настроим искрата, която е драйверната програма на искрата. В тази статия сме включили редовете на кода в скала. RDD могат да имат всякакъв тип Python, Java или Scala обекти, включително класове, определени от потребителя. Следователно по-долу са стъпките, които трябва да се следват за пускане на искра.

Стартиране на Spark-Shell

Стъпка 1: Изтеглете и разархивирайте искрата. Изтеглете текущата версия на искра от официалния уебсайт. Разархивирайте изтегления файл на всяко място във вашата система.

Стъпка 2: Настройка на Scala

  • Изтеглете scala от scala lang.org
  • Инсталирайте скала
  • Задайте променлива среда на SCALA_HOME и задайте променливата PATH в директорията на билка на scala.

Стъпка 3: Стартирайте черупката на искрата. Отворете командния ред и отворете папката с искри. Изпълнение - искра с черупка.

Различни начини за създаване на RDD

1. Зареждане на външен набор от данни

Методът на textFile на SparkContext се използва за зареждане на данните от всеки източник, което от своя страна създава RDD. Spark поддържа широк спектър от източници, от които могат да бъдат изтеглени данните, като Hadoop, HBase, Amazon S3 и др. Един източник на данни е текстов файл, който сме обсъдили тук. Освен текстови файлове, API на scala scala поддържа и други формати на данни като wholeTextFiles, файл с последователности, Hadoop RDF и много други.

пример

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

Променливата, наречена файл, е RDD, създадена от текстов файл в локалната система. В искровата обвивка вече е създаден обект (sc) на искра и се използва за достъп до искра. TextFile е метод на клас org.apache.spark.SparkContext, който чете текстов файл от HDFS, локална файлова система или URI от всяка поддържана от Hadoop файлова система и го връща като RDD от Strings. По този начин входът за този метод е URI и разделя данните през възлите.

2. Предаване на данните чрез метод Parallelize

Друг начин за създаване на RDD е чрез вземане на съществуваща колекция в паметта и предаването й за паралелизиране на метода на SparkContext. Докато научавате искра, този начин на създаване на RDD е доста полезен, тъй като можем да създадем RDD в черупката и да извършваме операции. Той почти не се използва извън тестване и прототипиране, тъй като изисква всички данни да са достъпни на локалната машина. Важен момент за паралелизирането е броят на дяловете, на които е разбита колекцията. Можем да предадем числото (дяловете) като втори параметър в метода на паралелизиране и ако числото не е посочено, Spark ще вземе решение въз основа на клъстера.

  • Без брой дялове:

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

  • С редица дялове:

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

3. Чрез трансформиране на съществуващо RDD

Има два вида операции, които се извършват над RDD.

  1. трансформации
  2. мерки

Трансформациите са операции на RDD, които водят до създаването на друго RDD, докато действията са операциите, които връщат крайна стойност на драйверната програма или записват данни във външна система за съхранение. Карта и филтър са някои операции за преобразуване. Разгледайте пример за филтриране на някои редове от текстов файл. Първоначално RDD се създава чрез зареждане на текстовия файл. След това прилагаме функция за филтриране, която ще филтрира набор от редове от текстовия файл. Резултатът също ще бъде RDD. Операцията на филтъра не променя съществуващия входен RDD. Вместо това връща показалец към изцяло нов RDD, който е грешки червен. Все още можем да използваме входящото RDD за други изчисления.

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

По-долу примерът показва същата концепция за трансформация за функция на карта. Резултатът е RDD, който е генериран поради функцията Map. При операцията с карта ще бъде дефинирана логиката и тази конкретна логика ще бъде приложена към всички елементи на набора от данни.

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

Важни точки, които трябва да запомните

  • Сред всички налични в момента рамки, Apache искрата е най-новата и набира популярност поради своите уникални характеристики и прост подход. Той елиминира всички недостатъци, които има Hadoop, както и поддържа свойството на отказоустойчивост и мащабируемост на MapReduce. За постигането на тези цели искра платформата въвежда концепцията за RDD.
  • Има главно три начина, по които може да се създаде RDD, където най-основният е, когато зареждаме набора от данни.
  • Методът на паралелизиране е широко само за целите на тестването и обучението.
  • Операция по трансформация би довела до RDD.

Препоръчителни статии

Това е ръководство за RDD в Spark. Тук сме обсъдили и различни начини за създаване на RDD, как да стартирате Spark-Shell с важни точки. Можете също да прегледате нашите статии, за да научите повече-

  1. Какво е RDD?
  2. Как да инсталирате Spark
  3. Искрено стрийминг
  4. Spark DataFrame
  5. Какво представлява Spark Shell Commands?
  6. Ръководство за списъка на командите на Unix Shell

Категория: