Учебное пособие по PySpark - изучение Apache Spark с использованием Python



В этом блоге по PySpark Tutorial вы узнаете об API PSpark, который используется для работы с Apache Spark с использованием языка программирования Python.

В мире, где данные генерируются с такой угрожающей скоростью, правильный анализ этих данных в нужное время очень полезен. Apache Spark - одна из самых замечательных сред для обработки больших данных в реальном времени и выполнения анализа.Все вместе, или PySpark - один из самых востребованных сертификационных курсов, позволяющий использовать Scala для Spark за свои деньги.. Итак, в этом PySpark Учебник блог, я буду обсуждать следующие темы:





Учебное пособие по PySpark: что такое PySpark?

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

Возможности PySpark - Учебное пособие по PySpark - Edureka



Первоначально написанное на языке программирования Scala, сообщество разработчиков ПО с открытым исходным кодом разработало замечательный инструмент для поддержки Python для Apache Spark. PySpark помогает специалистам по данным взаимодействовать с RDD в Apache Spark и Python через свою библиотеку. Py4j. Есть много функций, которые делают PySpark лучшим фреймворком, чем другие:

  • Скорость: Это в 100 раз быстрее, чем традиционные фреймворки для крупномасштабной обработки данных
  • Мощное кеширование: Уровень простого программирования обеспечивает мощные возможности кэширования и сохранения на диске
  • Развертывание: Может быть развернут через Mesos, Hadoop через Yarn или собственный менеджер кластера Spark.
  • В реальном времени: Вычисления в реальном времени и низкая задержка из-за вычислений в памяти
  • Полиглот: Поддерживает программирование на Scala, Java, Python и R

Давайте продолжим с нашим учебным блогом PySpark и посмотрим, где Spark используется в отрасли.

PySpark в индустрии

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



Половина - одна из крупнейших индустрий, стремящихся к онлайн-трансляции. Netflix использует Apache Spark для обработки потоков в реальном времени, чтобы предоставлять своим клиентам персонализированные онлайн-рекомендации. Он обрабатывает 450 миллиардов события в день, которые поступают в серверные приложения.

Финансы - это еще один сектор, в котором важную роль играет обработка данных в реальном времени Apache Spark. Банки используют Spark для доступа и анализа профилей в социальных сетях, чтобы получить информацию, которая поможет им принимать правильные бизнес-решения для оценка кредитного риска , таргетированная реклама и сегментация клиентов. Отток клиентов также уменьшается с помощью Spark. Обнаружение мошенничества - одна из наиболее широко используемых областей машинного обучения, в которой задействован Spark.

Здравоохранение провайдеры используют Apache Spark для Анализируйте истории болезни наряду с прошлыми клиническими данными, чтобы определить, какие пациенты могут столкнуться с проблемами со здоровьем после выписки из клиники. Apache Spark используется в Геномное секвенирование чтобы сократить время, необходимое для обработки данных генома.

Розничная торговля и электронная коммерция это отрасль, в которой невозможно представить ее функционирование без использования анализа и целевой рекламы. Одна из крупнейших платформ электронной коммерции на сегодняшний день Алибаба выполняет одни из крупнейших в мире заданий Spark для анализа петабайт данных. Alibaba выполняет извлечение признаков в данных изображения. eBay использует Apache Spark для предоставления Целевые предложения , улучшите качество обслуживания клиентов и оптимизируйте общую производительность.

реализация очереди приоритетов в java

Путешествовать Отрасли также используют Apache Spark. TripAdvisor , ведущий туристический веб-сайт, который помогает пользователям спланировать идеальное путешествие, использует Apache Spark для ускорения персонализированные рекомендации клиентов .TripAdvisor использует apache spark, чтобы давать советы миллионам путешественников сравнивая сотни сайтов найти лучшие цены на отели для своих клиентов.

Важный аспект этого руководства PySpark - понять, почему нам нужно использовать Python? Почему не Java, Scala или R?

Подпишитесь на наш канал на YouTube, чтобы получать новости ..!


Почему стоит использовать Python?

Легко учить: Программистам сравнительно легче изучить Python из-за его синтаксиса и стандартных библиотек. Более того, это язык с динамической типизацией, что означает, что RDD могут содержать объекты нескольких типов.

Обширный набор библиотек: Scala не имеет достаточного количества инструментов и библиотек для анализа данных, таких как Python, для машинного обучения и обработки естественного языка. Более того, в Scala отсутствует хорошая визуализация и локальные преобразования данных.

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

Одна из самых важных тем в этом руководстве PySpark - использование RDD. Давайте разберемся, что такое RDD

СДР Spark

Когда дело доходит до итеративных распределенных вычислений, то есть обработки данных по нескольким заданиям в вычислениях, нам нужно повторно использовать или совместно использовать данные между несколькими заданиями. В более ранних фреймворках, таких как Hadoop, возникали проблемы при выполнении нескольких операций / заданий, таких как

  • Хранение данных в промежуточном хранилище, таком как HDFS
  • Множественные задания ввода-вывода замедляют вычисления
  • Репликации и сериализации, что, в свою очередь, делает процесс еще медленнее

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

  • Преобразования: Преобразования создают новый набор данных из существующего. Ленивая оценка
  • Действия: Spark принудительно запускает вычисления только тогда, когда действия вызываются в RDD

Давайте разберемся с некоторыми преобразованиями, действиями и функциями

Чтение файла и отображение первых n элементов:

rdd = sc.textFile ('файл: /// home / edureka / Desktop / Sample') rdd.take (n)

Вывод:

[u'Deforestation возникает как основная экологическая и социальная проблема, которая теперь приняла форму более чем могущественного демона. ', u' Мы должны знать о причинах, следствиях и способах решения проблем, возникших из-за вырубки лесов. ', u' Мы предоставили много абзацев, длинные и короткие эссе о вырубке лесов, чтобы помочь вашим детям и детям узнать о проблеме, а также принять участие в конкурсе по написанию сочинений в школе или вне школы. ', u' Вы можете выбрать любое эссе по вырубке лесов, приведенное ниже, в соответствии со стандартом класса. ', u' Вырубка лесов становится главной глобальной проблемой для общества и окружающей среды. ']

Преобразование в нижний регистр и разделение: (нижний и разделенный)

def Func (lines): lines = lines.lower () lines = lines.split () return lines rdd1 = rdd.map (Func) rdd1.take (5)

Вывод:

[[u'deforestation ', u'is', u'arising ', u'as', u'the ', u'main', u'environmental ', u'and', u'social ', u'issue ', u'which', u'has ', u'now', u'taken ', ...... . . ]

Удаление стоп-слов: (фильтр)

stop_words = ['a', 'all', 'the', 'as', 'is', 'am', 'an', 'and', 'be', 'was', 'from', 'had' , 'Я', 'Я бы', 'почему', 'с'] rdd2 = rdd1.filter (лямбда z: z не в стоп-словах) rdd2.take (10)

Вывод:

[u'deforestation ', u'arising', u'main ', u'environmental', u'social ', u'issue', u'which ', u'has', u'now ', u'taken' ]

Сумма чисел от 1 до 500: (уменьшить)

sum_rdd = sc.parallelize (диапазон (1,500)) sum_rdd.reduce (лямбда x, y: x + y)

Вывод:

124750

Машинное обучение с PySpark

Продолжая наш учебный блог PySpark, давайте проанализируем некоторые данные BasketBall и сделаем некоторые прогнозы на будущее. Итак, здесь мы собираемся использовать данные баскетбола всех игроков НБА, начиная с 1980 г. [год введения 3 указателей].

Загрузка данных:

df = spark.read.option ('заголовок', 'true') .option ('inferSchema', 'true') .csv ('file: ///home/edureka/Downloads/season_totals.csv')

Столбцы печати:

печать (df.columns)

Вывод:

['_c0', 'player', 'pos', 'age', 'team_id', 'g', 'gs', 'mp', 'fg', 'fga', 'fg_pct', 'fg3', ' fg3a ',' fg3_pct ',' fg2 ',' fg2a ',' fg2_pct ',' efg_pct ',' ft ',' fta ',' ft_pct ',' orb ',' drb ',' trb ',' ast ' , 'stl', 'blk', 'tov', 'pf', 'pts', 'yr']

Сортировка игроков (OrderBy) и toPandas:

Здесь мы сортируем игроков по набранным очкам за сезон.

df.orderBy ('pts', ascending = False) .limit (10) .toPandas () [['yr', 'player', 'age', 'pts', 'fg3']]

Вывод:

Используя DSL и matplotlib:

Строка Java разделена на несколько разделителей

Здесь мы анализируем среднее количество 3-х очковые попытки за каждый сезон в срок 36 мин [интервал, соответствующий приблизительной полной игре НБА с достаточным отдыхом]. Мы вычисляем этот показатель, используя количество попыток 3-х очкового броска с игры (fg3a) и сыгранные минуты (mp), а затем строим результат с использованием matlplotlib .

из pyspark.sql.functions import col fga_py = df.groupBy ('yr') .agg ({'mp': 'sum', 'fg3a': 'sum'}) .select (col ('yr'), ( 36 * col ('sum (fg3a)') / col ('sum (mp)')). Alias ​​('fg3a_p36m')) .orderBy ('yr') из matplotlib import pyplot as plt import seaborn as sns plt.style .use ('fivethirtyeight') _df = fga_py.toPandas () plt.plot (_df.yr, _df.fg3a_p36m, color = '# CD5C5C') plt.xlabel ('Year') _ = plt.title ('Средний игрок 3-точечные попытки (за 36 минут) ') plt.annotate (' 3 указателя введены ', xy = (1980, .5), xytext = (1981, 1.1), fontsize = 9, arrowprops = dict (facecolor =' gray ', shrink = 0, linewidth = 2)) plt.annotate (' NBA перемещается по 3-точечной линии ', xy = (1996, 2.4), xytext = (1991.5, 2.7), fontsize = 9, arrowprops = dict (facecolor = 'серый', сжатие = 0, ширина линии = 2)) plt.annotate ('NBA перемещена назад 3-точечная линия', xy = (1998, 2.), xytext = (1998.5, 2.4), fontsize = 9, arrowprops = dict (цвет лица = 'серый', усадка = 0, ширина линии = 2))

Вывод:

Линейная регрессия и VectorAssembler:

Мы можем подобрать модель линейной регрессии к этой кривой, чтобы смоделировать количество попыток выстрела в следующие 5 лет. Мы должны преобразовать наши данные с помощью функции VectorAssembler в один столбец. Это требование для API линейной регрессии в MLlib.

from pyspark.ml.feature import VectorAssembler t = VectorAssembler (inputCols = ['yr'], outputCol = 'features') training = t.transform (fga_py) .withColumn ('yr', fga_py.yr) .withColumn ('label ', fga_py.fg3a_p36m) training.toPandas (). head ()

Вывод:

Модель здания:

Затем мы создаем объект нашей модели линейной регрессии, используя наши преобразованные данные.

из pyspark.ml.regression import LinearRegression lr = LinearRegression (maxIter = 10) model = lr.fit (обучение)

Применение обученной модели к набору данных:

Мы применяем нашу обученную объектную модель к нашему исходному обучающему набору вместе с данными за 5 лет в будущем.

from pyspark.sql.types import Row # применить модель для сезона 1979-80 гг. по сезон 2020-21 гг. training_yrs = training.select ('yr'). rdd.map (lambda x: x [0]). collect () training_y = training.select ('fg3a_p36m'). rdd.map (lambda x: x [0]). collect () prediction_yrs = [2017, 2018, 2019, 2020, 2021] all_yrs = training_yrs + prediction_yrs # построенное тестирование DataFrame test_rdd = sc.parallelize (all_yrs) row = Row ('yr') & ampamplt all_years_features = t.transform (test_rdd.map (row) .toDF ()) # применить модель линейной регрессии df_results = model.transform (all_years_features) .toPandas ()

Построение окончательного прогноза:

Затем мы можем построить наши результаты и сохранить график в указанном месте.

plt.plot (df_results.yr, df_results.prediction, linewidth = 2, linestyle = '-', color = '# 224df7', label = 'L2 Fit') plt.plot (training_yrs, training_y, color = '# f08080 ', label = None) plt.xlabel (' Год ') plt.ylabel (' Количество попыток ') plt.legend (loc = 4) _ = plt.title (' Среднее количество попыток игрока с 3 очками (за 36 минут) ') plt.tight_layout () plt.savefig (' / home / edureka / Downloads / Images / REGRESSION.png ')

Вывод:

На этом графике мы подошли к концу этого учебного блога PySpark.

Вот и все, ребята!

Надеюсь, вы, ребята, получили представление о том, что такое PySpark, почему Python лучше всего подходит для Spark, RDD и немного познакомились с машинным обучением с Pyspark в этом учебном блоге PySpark. Поздравляем, вы больше не новичок в PySpark. Если вы хотите узнать больше о PySpark и разобраться в различных отраслевых сценариях использования, ознакомьтесь с нашими Spark с Python Блог.

Теперь, когда вы поняли, что такое Pyspark, ознакомьтесь с от Edureka, надежной компании по онлайн-обучению с сетью из более чем 250 000 довольных учащихся по всему миру. Эдурека Обучение сертификации Python Spark с использованием PySpark разработан, чтобы предоставить вам знания и навыки, необходимые для того, чтобы стать успешным разработчиком Spark, использующим Python, и подготовить вас к сертификационному экзамену разработчика Cloudera Hadoop и Spark (CCA175).