Статьи

Apache Spark: быстрый старт с Python

Spark Обзор

Согласно официальному сайту, «Apache Spark — это быстрый и общий движок для крупномасштабной обработки данных»
Лучше всего использовать его в кластерной среде, в которой задача или задание обработки данных разделены для быстрого и эффективного выполнения на нескольких компьютерах или узлах. Он утверждает, что программа запускается в 100 раз быстрее, чем платформа Hadoop.

Spark использует объект, называемый RDD (Resilient Distributed Dataset), для обработки и фильтрации данных. Объект RDD предоставляет различные полезные функции для обработки данных распределенным способом. Прелесть Spark в том, что вам не нужно понимать, как он распределяет или распределяет данные по узлам в кластере. Как разработчик, вы сосредотачиваетесь только на написании функции RDD для обработки и преобразования данных. Spark изначально построен с использованием языка Scala. Но вы можете использовать Java, Python или Scala для написания своей программы Spark.

Spark состоит из различных модулей или компонентов, которые можно использовать для своих нужд по обработке данных. Компонентная модель Spark выглядит следующим образом:

искровые компоненты

Spark Компоненты

Основным компонентом является Spark Core, который использует RDD для обработки (сопоставления и сокращения) данных в распределенной среде. Другие компоненты, созданные на основе Spark Core:

  • Spark Stream: используется для анализа потоков данных в реальном времени
  • Spark SQL: можно писать запросы на основе SQL, используя контекст Hive для обработки данных
  • MLLib: поддержка алгоритмов машинного обучения и инструментов для обучения ваших данных
  • GraphX: создание графиков данных и выполнение таких операций, как преобразование и объединение

Настройка среды

Сначала установите JDK 8 и установите переменную среды JAVA_HOME указывающую на JDK home. Для Python вы можете установить популярные IDE, такие как Enthought Canopy или Anaconda, или вы можете установить базовый Python с веб-сайта python.org . Для Spark загрузите и установите последнюю версию с официального сайта Apache Spark .

После установки установите SPARK_HOME среды SPARK_HOME чтобы она указывала на домашнюю папку Spark. Также убедитесь, что переменная PATH указывает на соответствующие папки bin: JAVA_HOME\bin и SPARK_HOME\bin. Затем создайте образец набора данных, который мы будем использовать для обработки с использованием Spark. Набор данных будет означать сбор оценок продуктов. Формат данных следующий:

искровой продукт-отзывы-данные

Данные о продуктах

Первый столбец представляет идентификатор заказа, второй столбец — идентификатор продукта, а третий столбец — рейтинги. Он говорит вам рейтинги продуктов как часть каждого заказа. Мы обработаем данные, чтобы узнать общее количество продуктов по каждому рейтингу. Выше приведено лишь небольшое подмножество данных, чтобы вы поняли, как легко обрабатывать в Spark. Возможно, вы захотите загрузить или сгенерировать данные из реальной жизни для реализации аналогичного варианта использования. Сохраните этот файл данных в папке (скажем, /spark/data ). Это может быть папка на ваш выбор.

Взгляд на код

01
02
03
04
05
06
07
08
09
10
11
12
from pyspark import SparkConf, SparkContext
import collections
 
conf = SparkConf().setMaster("local").setAppName("Product Ratings")
sc = SparkContext(conf = conf)
 
rows = sc.textFile("file:///spark/data/product-ratings-data.py")
ratings = rows.map(lambda x: x.split()[2])
output = ratings.countByValue()
sortedOutput = collections.OrderedDict(sorted(output.items()))
for key, value in sortedOutput.items():
print("%s %i" % (key, value))

Python интегрируется с Spark с помощью модуля pyspark . Вам понадобятся два основных класса из этого модуля: SparkConf и SparkContext . SparkContext используется для создания объекта RDD. SparkConf используется для настройки или настройки свойств приложения. В первом разделе указывается, будет ли наша работа Spark использовать кластерную (распределенную) среду или на одной машине. На данный момент мы можем установить его как local как это основная программа, которую мы запустим, чтобы получить обзор Spark, и, следовательно, нам не нужна распределенная среда. Мы также устанавливаем имя приложения и будем называть его «Basic Spark App». Если вы используете веб-интерфейс для управления заданиями Spark, это имя отображается для вашей работы. Затем вы получаете SparkContext ( sc ) из настроенного объекта SparkConf .

Загрузите данные

1
rows = sc.textFile("file:///spark/data/product-ratings-data")

Следующий фрагмент кода загружает данные из локальной файловой системы. У нас уже есть файл, который хранится в папке spark/data . Файл содержит информацию о рейтинге товаров, которую мы будем загружать, чтобы найти общее количество товаров с определенной оценкой. Функция textFile() используется для загрузки начальных данных из указанного пути к файлу и возвращает объект Spark RDD — rows . Это основной объект, который мы будем использовать для дальнейшей обработки и преобразования наших данных. Этот объект RDD будет содержать данные в виде записи строки. Каждая строка в файле будет записью или значением в объекте RDD.

Преобразовать данные

1
2
ratings = rows.map(lambda x: x.split()[2])
output = ratings.countByValue()

Функция map() использует функцию лямбда (внутреннюю функцию, определенную как лямбда), чтобы разделить строку данных по пробелам и получить третий столбец (индекс начинается с 0, и поэтому 2 становится третьим столбцом). Третий извлеченный столбец — это столбец оценок. Разделение будет выполняться в каждой строке, и полученный результат будет сохранен в новом объекте RDD, который мы называем rating .

Наши новые ratings RDD теперь будут иметь рейтинги, как показано ниже:

искровые оценки колонки

Столбец «Извлеченные рейтинги»

Теперь, чтобы найти общее количество продуктов для каждого рейтинга, мы будем использовать countByValue() . Он будет подсчитывать каждый повторный рейтинг и размещать значение счетчика рядом с каждым рейтингом. Окончательный результат будет выглядеть следующим образом.

искровые рейтинги подсчета

Всего товаров в рейтинге

Вы можете запустить свою программу на Python, используя приложение spark-submit как показано ниже:

spark-submit product-ratings-data.py

Всего существует три продукта с рейтингом 4, два продукта с рейтингом 3 и один продукт с рейтингом 1 и 2 соответственно. Функция countByValue() вернет обычный объект коллекции Python, который в конечном итоге может быть повторен для отображения результатов.

Ссылка: Apache Spark: быстрый старт с Python от нашего партнера JCG Раджива Хати в блоге TECH ORGAN .