Какие общие переменные поддерживает Apache Spark: 2 основных вида

аналитика больших данных курсы, курсы spark, основы spark, основы hadoop, обучение администраторов spark

В прошлой статье мы говорили про логистическую регрессию в Apache Spark. Сегодня поговорим про общие переменные, которые поддерживает этот фреймворк. Читайте далее про виды общих переменных в Spark, а также про их особенности.

Что такое общие переменные в Spark: основные виды и особенности

Для параллельной обработки данных Apache Spark использует общие переменные, которые позволяют отправить задачу исполнителю в кластере для дальнейшего выполнения более глобальных задач путем разбиения их на подзадачи. Таким образом, общие переменные — это переменные, которые создают одну общую задачу для выполнения более крупных частных задач в кластере. Общие переменные в Spark разделяются на следующие виды:

  • широковещательные переменные (broadcast variables);
  • аккумуляторные переменные.

Каждый из этих видов мы подробнее рассмотрим далее.

Широковещательные переменные

Широковещательные переменные — это переменные, которые используются для создания копии данных и сохранения ее на всех узлах кластера. Широковещательные переменные позволяют эффективно передавать большие значения, доступные только для чтения, всем рабочим узлам для дальнейшего использования в операциях Spark (например, агрегирование, группировка, сортировка). Широковещательные переменные могут использоваться для передачи больших таблиц поиска (таблицы со структурой ключ/значение, позволяющие выполнять фильтрацию данных). Следующий код на языке Python создает широковещательную переменную и использует ее для возврата широковещательного значения:

 

аналитика больших данных курсы, курсы spark, основы spark, основы hadoop, обучение администраторов spark
Вывод широковещательного значения из отсортированного набора значений
words_new  = sc.broadcast(["scala", "java", "hadoop", "spark", "akka"])
data = words_new.value
print ("Stored data -> %s" % (data))
elem = words_new.value [2]
print ("Printing a particular element in RDD -> %s" % (elem))

Как видно из кода, широковещательная переменная имеет атрибут value, который хранит данные и используется для возврата широковещательного значения (broadcast value) [1].

Аккумуляторные переменные

Аккумуляторные переменные — это переменные, которые используются для записи данных в память. Аккумуляторные переменные вводятся при необходимости организовать счетчик (в зависимости от условия или события). Они применяются с целью отладки для подсчета некоторых событий, возникающих в процессе выполнения какой-либо задачи в кластере. Например, можно использовать аккумулятор для подсчета пустых строк в RDD. Следующий код на языке Python подсчитывает количество пустых строк в наборе RDD и инкрементирует счетчик на единицу при каждой найденной пустой строке [2]:

 

file = sc.textFile('file_2.csv')
blankLines = sc.accumulator(0) #Создаем аккумулятор и инициализируем его нулем
def extractCallSigns(line):
global blankLines #Получаем доступ к глобальной переменной
if (line == ""):
blankLines +=1
return line.split(" ")
callSigns = file.flatMap(extractCallSigns)
callSigns.saveAsTextFile('str.txt')
print("Count of empty strings: ", blankLines.value)

 

аналитика больших данных курсы, курсы spark, основы spark, основы hadoop, обучение администраторов spark
Количество пустых строк в заданном наборе RDD

Таким образом, благодаря общим переменным, Apache Spark может более эффективно выполнять поставленные задачи в кластере Big Data путем их разбиения на более простые подзадачи, что позволяет значительно экономить память кластера. Все это делает фреймворк Apache Spark весьма полезным средством для Data Scientist’а и разработчика Big Data приложений. В следующей статье мы поговорим про работу с пользовательскими функциями в Spark.

Больше подробностей про применение Apache Spark в проектах анализа больших данных, разработки Big Data приложений и прочих прикладных областях Data Science вы узнаете на практических курсах по Spark в нашем лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве:

Записаться на курс

Смотреть раcписание

Источники

  1. https://coderlessons.com/tutorials/python-technologies/izuchite-pyspark/pyspark-transliatsiia-i-akkumuliator
  2. К.Харау, Э.Ковински, П.Венделл, М.Захария. Изучаем Spark: молниеносный анализ данных

Добавить комментарий

Поиск по сайту