Въведение в Spark с Python - PySpark за начинаещи



Apache Spark превзе света на големите данни и анализи и Python е един от най-достъпните езици за програмиране, използвани в индустрията днес. Така че тук в този блог ще научим за Pyspark (искра с питон), за да извлечем най-доброто от двата свята.

е една от най-често използваните рамки, когато става въпрос за работа и работа с големи данни И Python е един от най-използваните езици за програмиране за анализ на данни, машинно обучение и много други. И така, защо да не ги използваме заедно? Това е където Искра с Python също известен като PySpark влиза внаснимка.

Със средна заплата от $ 110 000 годишно за разработчик на Apache Spark, няма съмнение, че Spark се използва много в индустрията. Защотосибогат набор от библиотеки, Python се използва отнапо-голямата част от специалистите по данни и експерти по Анализ днес. Интегрирането на Python със Spark беше основен подарък за общността. Spark е разработен на език Scala, който много прилича на Java. Той компилира програмния код в байт код за JVM за искрова обработка на големи данни. За да поддържа Spark с python, общността на Apache Spark пусна PySpark.От както, е известно, че е едно от най-търсените умения в цялата индустрия поради широкия спектър от предимства, които се получават след комбинирането на най-доброто от двата свята.В този блог Spark with Python ще обсъдя следните теми.





Въведение в Apache Spark

Apache Spark е клъстерна изчислителна рамка с отворен код за обработка в реално време разработена от Apache Software Foundation. Spark предоставя интерфейс за програмиране на цели клъстери с имплицитно паралелизъм на данните и толерантност към повреди.



По-долу са някои от характеристиките на Apache Spark, което му дава предимство пред други рамки:

Spark Характеристики - Spark с Python - Edureka

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

Защо да отида за Python?

Въпреки че Spark е проектиран в скала, което го прави почти 10 пъти по-бърз от Python, но Scala е по-бърз само когато броят на използваните ядра е по-малък . Тъй като по-голямата част от анализа и процесите в днешно време изискват голям брой ядра, предимството на производителността на Scala не е толкова голямо.



За програмисти Python е сравнително по-лесно да науча поради синтаксиса и стандартните библиотеки. Освен това е динамично въведен език, което означава, че RDD могат да съдържат обекти от няколко типа.

Въпреки че Скала има SparkMLlib няма достатъчно библиотеки и инструменти за машинно обучение и NLP цели. Освен това на Scala липсва визуализация на данни.

Обучение на PySpark | Apache Spark с Python | Едурека

Абонирайте се за нашия канал в YouTube, за да получавате нови актуализации ..!

Настройване на Spark с Python (PySpark)

Надявам се вие ​​да знаете как .Така че, след като го направите разархивиран искровия файл, инсталиран и добави, че е път към .bashrc файл, трябва да въведетеизточник .bashrc

износ SPARK_HOME = /usr/lib/hadoop/spark-2.1.0-bin-hadoop2.7 износ PATH = $ PATH: /usr/lib/hadoop/spark-2.1.0-bin-hadoop2.7/bin

За да отворите обвивката на pyspark, трябва да въведете командата./bin/pyspark

Искра в индустрията

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

Yahoo използва Apache Spark за своите възможности за машинно обучение, за да персонализира своите новини, уеб страници, а също и за целева реклама. Те използват Spark с python, за да разберат какви новини - потребителите се интересуват от четене и категоризират новинарските истории, за да разберат какъв вид потребители биха се заинтересували да четат всяка категория новини.

TripAdvisor използва apache spark, за да предоставя съвети на милиони пътници, като сравнява стотици уебсайтове, за да намери най-добрите хотелски цени за своите клиенти. Времето, необходимо за четене и обработка на отзивите за хотелите в четлив формат, се извършва с помощта на Apache Spark.

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

PySpark SparkContext и поток от данни

Говорейки за Spark с Python, работата с RDD е възможна от библиотеката Py4j. PySpark Shell свързва API на Python с искровото ядро ​​и инициализира контекста на Spark. Искрен контекст е сърцето на всяко приложение на искра.

  1. Spark context създава вътрешни услуги и установява връзка с среда за изпълнение на Spark.
  2. Обектът sparkcontext в програмата за драйвери координира целия разпределен процес и позволява разпределението на ресурсите.
  3. Клъстерните мениджъри предоставят изпълнители, които са JVM процес с логика.
  4. Обектът SparkContext изпраща приложението към изпълнители.
  5. SparkContext изпълнява задачи във всеки изпълнител.

как да разпределя динамично масив в java

Случай за употреба на PySpark KDD

Сега нека да разгледаме случай на употреба на Купа KDD’99 (Международно състезание за откриване на знания и инструменти за извличане на данни).Тук ще вземем част от набора от данни, защото оригиналният набор от данни е твърде голям

импортиране на urllib f = urllib.urlretrieve ('http://kdd.ics.uci.edu/databases/kddcup99/kddcup.data_10_percent.gz', 'kddcup.data_10_percent.gz')

СЪЗДАВАНЕ на RDD:
Сега можем да използваме този файл за създайте нашата RDD .

data_file = './kddcup.data_10_percent.gz' raw_data = sc.textFile (файл с данни)

ФИЛТРИРАНЕ:

Да предположим, че искаме да преброим колко са нормалните. взаимодействия, които имаме в нашия набор от данни. Ние можем филтър нашите raw_data RDD, както следва.

normal_raw_data = raw_data.filter (ламбда x: „нормално.“ в x)

БРОЯ:

Сега можем броя колко елементи имаме в новия RDD.

от време време за импортиране t0 = time () normal_count = normal_raw_data.count () tt = time () - t0 print 'Има {}' нормални 'взаимодействия'.format (normal_count) print' Брой завършен за {} секунди'.format (кръг (tt, 3))

Изход:

Има 97278 „нормални“ взаимодействия Брой завършени за 5.951 секунди

КАРТИРАНЕ:

В товаслучайискаме да прочетем нашия файл с данни като CSV форматиран. Можем да направим това, като приложим ламбда функция към всеки елемент в RDD, както следва. Тук ще използваме преобразуване на map () и take ().

от импортиране на pprint pprint csv_data = raw_data.map (ламбда x: x.split (',')) t0 = time () head_rows = csv_data.take (5) tt = time () - t0 print 'Синтактичният анализ е завършен за {} секунди '.format (round (tt, 3)) pprint (head_rows [0])

Изход:

Анализът завърши за 1.715 секунди [u'0 ', u'tcp', u'http ', u'SF', u'181 ', u'5450', u'0 ', u'0',. . u'нормално. ']

РАЗДЕЛЯНЕ:

Сега искаме да имаме всеки елемент в RDD като двойка ключ-стойност, където ключът е тагът (напр. нормално ) и стойността е целият списък с елементи, който представлява реда в CSV форматирания файл. Можем да продължим по следния начин. Тук използваме line.split () и map ().

def parse_interaction (line): elems = line.split (',') tag = elems [41] return (tag, elems) key_csv_data = raw_data.map (parse_interaction) head_rows = key_csv_data.take (5) pprint (head_rows [0] )
 Изход: (u'нормално. ', [u'0', u'tcp ', u'http', u'SF ', u'181', u'5450 ', u'0', u'0 ', u' 0,00 ', u'1,00', .... U'нормално. '])

СЪБИРАНЕТО ДЕЙСТВИЕ:

Тук ще използваме действието collect (). Той ще вкара всички елементи на RDD в паметта. Поради тази причина трябва да се използва внимателно при работа с големи RDD.

t0 = time () all_raw_data = raw_data.collect () tt = time () - t0 print 'Данни, събрани за {} секунди'. формат (кръг (tt, 3))

Изход:

Данни, събрани за 17.927 секунди

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

Като последен пример, съчетаващ всички предишни, искаме да съберем всичкинормалновзаимодействия като двойки ключ-стойност.

# получаване на данни от файл data_file = './kddcup.data_10_percent.gz' raw_data = sc.textFile (data_file) # разбор на двойки ключ-стойност key_csv_data = raw_data.map (parse_interaction) # филтриране на нормални ключови взаимодействия normal_key_interactions = key_csv_data. ламбда x: x [0] == 'нормално.') # събиране на всички t0 = time () all_normal = normal_key_interactions.collect () tt = time () - t0 normal_count = len (all_normal) print 'Данни, събрани за {} секунди '.format (round (tt, 3)) print 'Има {}' нормални 'взаимодействия'. format (normal_count)

Изход:

Данни, събрани за 12.485 секунди Има 97278 нормални взаимодействия

Така че това е, момчета!

Надявам се да ви е харесал този блог Spark with Python. Ако четете това, Поздравления! Вече не сте начинаещ в PySpark. Изпробвайте този прост пример на вашите системи сега.

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

Имате въпрос към нас? Моля, споменете го в раздела за коментари и ние ще се свържем с вас.