Урок за PySpark - Научете Apache Spark с помощта на Python



В този блог на PySpark Tutorial ще научите за PSpark API, който се използва за работа с Apache Spark с помощта на Python Programming Language.

В свят, в който се генерират данни с толкова тревожна скорост, правилният анализ на тези данни в точното време е много полезен. Една от най-невероятните рамки за обработка на големи данни в реално време и извършване на анализ е Apache Spark.Заедно, или PySpark е един от най-търсените курсове за сертифициране, което дава възможност на Scala за Spark да спечели парите си. Така че в това Урок за PySpark блог, ще обсъдя следните теми:





Урок за PySpark: Какво е PySpark?

Apache Spark е бърза клъстерна изчислителна рамка, която се използва за обработка, заявки и анализ на големи данни. Базиран на изчисление в паметта, той има предимство пред няколко други рамки за големи данни.

как да използвам python anaconda

Характеристики на PySpark - Урок за PySpark - Edureka



Първоначално написана на Scala Programming Language, общността с отворен код разработи невероятен инструмент в подкрепа на Python за Apache Spark. PySpark помага на учените по данни да взаимодействат с RDD в Apache Spark и Python чрез своята библиотека Py4j. Има много функции, които правят PySpark по-добра рамка от други:

  • Скорост: Това е 100 пъти по-бързо от традиционните широкомащабни рамки за обработка на данни
  • Мощно кеширане: Простият програмен слой осигурява мощни възможности за кеширане и постоянство на диска
  • Внедряване: Може да бъде внедрен чрез Mesos, Hadoop чрез Yarn или собствения мениджър на клъстери на Spark
  • Реално време: Изчисляване в реално време и ниска латентност поради изчисленията в паметта
  • Полиглот: Поддържа програмиране в Scala, Java, Python и R

Нека да продължим напред с нашия урок на PySpark и да видим къде се използва Spark в индустрията.

PySpark в индустрията

Всяка индустрия се върти около големите данни и там, където има големи данни, има и анализ. Така че нека да разгледаме различните индустрии, в които се използва Apache Spark.



Половината е една от най-големите индустрии, развиващи се към онлайн стрийминг Нетфликс използва Apache Spark за обработка на потоци в реално време, за да предоставя персонализирани онлайн препоръки на своите клиенти. Той обработва 450 милиарда събития на ден, които се насочват към сървърни приложения.

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

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

Търговия на дребно и електронна търговия е индустрия, в която човек не може да си представи, че работи без използването на анализ и целенасочена реклама. Една от най-големите платформи за електронна търговия днес Али Баба управлява някои от най-големите Spark Jobs в света, за да анализира петабайта данни. Alibaba изпълнява извличане на функции в данните за изображението. eBay използва Apache Spark за предоставяне Целеви оферти , подобряване на клиентското изживяване и оптимизиране на цялостното представяне

Пътуване Индустриите също използват 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 RDD

Когато става въпрос за итеративно разпределено изчисление, т.е.обработка на данни за множество задачи в изчисления, трябва да използваме повторно или да споделяме данни между множество работни места. По-ранни рамки като Hadoop са имали проблеми при работа с множество операции / задачи като

  • Съхраняване на данни в междинно съхранение като HDFS
  • Множество I / O задания правят изчисленията бавни
  • Репликации и сериализации, което от своя страна прави процеса още по-бавен

RDD се опитват да решат всички проблеми, като позволяват толерантни на неизправности разпределени изчисления в паметта. RDD е съкращение от Устойчиви разпределени набори от данни. RDD е разпределена абстракция на памет, която позволява на програмистите да извършват изчисления в паметта на големи клъстери по устойчив на грешки начин. Те са само за четене колекция от обекти разпределени в набор от машини, които могат да бъдат възстановени, ако дялът бъде загубен. Има няколко операции, извършени върху RDD:

  • Трансформации: Трансформациите създават нов набор от данни от съществуващ. Мързелива оценка
  • Действия: Spark принуждава изчисленията за изпълнение само когато действията са извикани върху RDD

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

задайте път на класа в linux

Четене на файл и показване на Топ n елементи:

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

Изход:

[u 'Обезлесяването възниква като основният екологичен и социален проблем, който сега е под формата на повече от мощен демон. „, u“ Трябва да знаем за причините, последиците и начините за решаване на проблемите, възникнали поради обезлесяването. ', u' Предоставихме много параграфи, дълги и кратки есета за обезлесяването, за да помогнем на вашите деца и деца да разберат проблема, както и да участват в състезанието по писане на есета в училището или извън училището. ', u'Можете да изберете всяко есе за изсичане на горите, дадено по-долу, според стандарта за класа. ', u' Обезлесяването възниква като основният глобален проблем за обществото и околната среда. ']

Преобразуване в малки букви и разделяне: (Долно и разделно)

def Func (редове): редове = редове.по-ниски () редове = редове.сплит () връщащи редове 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'hich', u'has ', u'now', u'taken ', ...... . . ]

Премахване на StopWords: (Филтър)

stop_words = ['a', 'all', 'the', 'as', 'is', 'am', 'an', 'и', 'be', 'been', 'from', 'had' , 'I', 'бих', 'защо', 'с'] 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 (диапазон (1500)) sum_rdd.reduce (ламбда x, y: x + y)

Изход:

124750

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

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

Зареждане на данни:

df = spark.read.option ('header', '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', възходящ = False) .limit (10) .toPandas () [['yr', 'player', 'age', 'pts', 'fg3']]

Изход:

кога да се използва това. в java

Използване на DSL и matplotlib:

Тук анализираме средния брой на Опити с 3 точки за всеки сезон във времеви лимит 36 мин [интервал, съответстващ на приблизителна пълна NBA игра с достатъчно почивка]. Ние изчисляваме тази метрика, като използваме броя на опитите за гол от 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 ('Година') _ = plt.title ('Средна стойност на играча Опити с 3 точки (за 36 минути) ') plt.annotate („Въведен 3 указател“, xy = (1980, .5), xytext = (1981, 1.1), fontsize = 9, arrowprops = dict (facecolor =' grey ', свиване = 0, ширина на линията = 2)) plt.annotate (' NBA преместена в линия с 3 точки ', xy = (1996, 2.4), xytext = (1991.5, 2.7), fontsize = 9, arrowprops = dict (facecolor = 'сиво', свиване = 0, ширина на линията = 2)) plt.annotate ('НБА се премести назад с 3-точкова линия', xy = (1998, 2.), xytext = (1998.5, 2.4), fontsize = 9, arrowprops = dict (facecolor = 'сиво', свиване = 0, широчина на линията = 2))

Изход:

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

Можем да приспособим модел на линейна регресия към тази крива, за да моделираме броя на опитите за изстрел за следващите 5 години. Трябва да трансформираме данните си с помощта на функцията VectorAssembler в една колона. Това е изискване за API за линейна регресия в MLlib.

от pyspark.ml.feature импортиране VectorAssembler t = VectorAssembler (inputCols = ['yr'], outputCol = 'features') обучение = 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 години бъдещи данни

от pyspark.sql.types импортиране Ред # приложи модел за сезон 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 = Няма) 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 и да разберете различните случаи на използване в индустрията, разгледайте нашите Искра с Python Блог.

След като разбрахте какво е Pyspark, разгледайте от Edureka, доверена компания за онлайн обучение с мрежа от над 250 000 доволни учащи, разпространени по целия свят. Edureka’s Обучение за сертифициране на Python Spark с помощта на PySpark е създаден, за да ви предостави знанията и уменията, необходими за да станете успешен разработчик на Spark с помощта на Python и да ви подготви за изпит за сертифициране на Cloudera Hadoop и Spark Developer (CCA175).