Вступ до 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 в каталог бін шкали.

Крок 3: Запустіть іскрову оболонку. Відкрийте командний рядок і перейдіть у папку бін іскри. Виконати - іскрову оболонку.

Різні способи створення RDD

1. Завантаження зовнішнього набору даних

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

Приклад

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

Файл, що називається, - це RDD, створений з текстового файлу в локальній системі. У іскровій оболонці об'єкт іскрового контексту (sc) вже створений і використовується для доступу до іскри. TextFile - метод класу org.apache.spark.SparkContext, який читає текстовий файл з HDFS, локальної файлової системи або будь-якого URI файлової системи, підтримуваної Hadoop, і повертає його як RDD рядків. Таким чином, вхідним даним методом є 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. Іскровий DataFrame
  5. Що таке команди іскрової оболонки?
  6. Посібник зі списку команд оболонки Unix

Категорія: