Введение в СДР в Spark

СДР, обозначающий отказоустойчивый распределенный набор данных, является одним из наиболее важных понятий в Spark. Это доступная только для чтения коллекция записей, которая разделена и распределена по узлам кластера. Он может быть преобразован в какой-либо другой RDD посредством операций, и после того, как RDD создан, его нельзя изменить, вместо этого будет создан новый RDD.

Одна важная особенность, с помощью которой Spark преодолевает ограничения Hadoop, заключается в использовании RDD, поскольку вместо репликации данных Resilient Distributed Datasets (RDD) поддерживает данные по узлам кластера и восстанавливает данные с помощью графа линий. В Hadoop данные избыточно хранились среди машин, которые обеспечивали свойство отказоустойчивости. Таким образом, СДР является фундаментальной абстракцией, предоставляемой Spark для распределенных данных и вычислений.

Различные способы создания СДР:

  • Загрузка внешнего набора данных
  • Передача данных через метод параллелизации
  • Преобразуя существующий СДР

Давайте обсудим каждый из них подробно, но перед этим нам нужно настроить оболочку spark, которая является программой-драйвером spark. В этой статье мы включили строки кода в Scala. СДР могут иметь любой тип объектов Python, Java или Scala, включая определяемые пользователем классы. Таким образом, ниже приведены шаги, которые необходимо выполнить для запуска спарк-оболочки.

Запуск Spark-Shell

Шаг 1: Загрузите и распакуйте спарк. Скачайте актуальную версию spark с официального сайта. Распакуйте загруженный файл в любое место вашей системы.

Шаг 2: Настройка Scala

  • Скачать scala с сайта scala lang.org
  • Установить scala
  • Установите переменную окружения SCALA_HOME и установите переменную PATH для каталога bin scala.

Шаг 3: Запустите спарк-оболочку. Откройте командную строку и перейдите в папку bin искры. Выполнить - искрооболочка.

Различные способы создания СДР

1. Загрузка внешнего набора данных

Метод textFile в SparkContext используется для загрузки данных из любого источника, который, в свою очередь, создает СДР. Spark поддерживает широкий спектр источников, из которых могут быть получены данные, такие как Hadoop, HBase, Amazon S3 и т. Д. Одним из источников данных является текстовый файл, который мы обсуждали здесь. Помимо текстовых файлов API-интерфейс scala поддерживает также другие форматы данных, такие как wholeTextFiles, файл последовательности, Hadoop RDF и многие другие.

пример

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

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

2. Передача данных через метод распараллеливания

Другой способ создания 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

Существует два вида операций, выполняемых над СДР.

  1. Трансформации
  2. действия

Преобразования - это операции над 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 spark является последней и набирает популярность благодаря своим уникальным функциям и простому подходу. Это устраняет все недостатки, которые создает Hadoop, а также поддерживает свойство отказоустойчивости и масштабируемости MapReduce. Для достижения этих целей в платформе искры внедряется концепция RDD.
  • Существует в основном три способа создания СДР, где самый базовый способ - это когда мы загружаем набор данных.
  • Метод распараллеливания широко используется только для тестирования и обучения.
  • Операция преобразования приведет к RDD.

Рекомендуемые статьи

Это было руководство к RDD в Spark. Здесь мы также обсудили различные способы создания RDD, как запустить Spark-Shell с важными моментами. Вы также можете просмотреть наши статьи, чтобы узнать больше

  1. Что такое СДР?
  2. Как установить Spark
  3. Spark Streaming
  4. Spark DataFrame
  5. Что такое команды Spark Shell?
  6. Руководство по списку команд оболочки Unix