Panimula sa Spark with Python - PySpark para sa mga Nagsisimula



Kinuha ng Apache Spark ang mundo ng Big Data & Analytics at ang Python ay isa sa mga pinaka-madaling ma-access na wika ng programa na ginagamit sa industriya ngayon. Kaya dito sa blog na ito, matututunan natin ang tungkol sa Pyspark (spark na may sawa) upang makuha ang pinakamahusay sa parehong mundo.

ay isa sa pinaka malawak na ginamit na balangkas pagdating sa paghawak at pagtatrabaho sa Big Data AT Sawa ay isa sa mga pinakalawak na ginagamit na wika ng pagprograma para sa Pagsusuri ng Data, Pag-aaral ng Makina at marami pa. Kaya, bakit hindi gamitin ang mga ito nang magkasama? Ito ay kung saan Spark kay Python kilala rin bilang PySpark dumating saanglarawan

Sa average na suweldo na $ 110,000 pa para sa isang Apache Spark Developer, walang duda na ang Spark ay ginagamit nang madalas sa industriya. Dahil sanitomayamang hanay ng silid-aklatan, ang Python ay ginagamit ngangkaramihan ng mga eksperto sa Data Scientist at Analytics ngayon. Ang pagsasama ng Python sa Spark ay isang pangunahing regalo sa pamayanan. Ang Spark ay binuo sa wikang Scala, na halos kapareho sa Java. Pinagsasama nito ang code ng programa sa bytecode para sa JVM para sa spark malaking pagproseso ng data. Upang suportahan ang Spark gamit ang sawa, ang pamayanan ng Apache Spark ay naglabas ng PySpark.Magmula noon, ay kilala na isa sa mga pinakahinahabol na kasanayan sa buong industriya dahil sa malawak na hanay ng mga benepisyo na dumating pagkatapos pagsamahin ang pinakamahusay sa kapwa mga mundong ito.Sa Spark with Python blog na ito, tatalakayin ko ang mga sumusunod na paksa.





Panimula sa Apache Spark

Ang Apache Spark ay isang open-source na cluster-computing framework para sa pagproseso ng real-time binuo ng Apache Software Foundation. Nagbibigay ang Spark ng isang interface para sa pag-program ng buong cluster na may implicit parallelism ng data at mapagparaya sa kasalanan.



Nasa ibaba ang ilan sa mga tampok ng Apache Spark na nagbibigay dito ng isang gilid sa iba pang mga balangkas:

Mga Tampok ng Spark - Spark na may Python - Edureka

  • Bilis: Ito ay 100x mas mabilis kaysa sa tradisyunal na malakihang mga balangkas ng pagpoproseso ng data.
  • Napakahusay na Caching: Nagbibigay ang simpleng layer ng programa ng malakas na mga kakayahan sa pag-cache at disk pagtitiyaga.
  • Pag-deploy: Maaaring i-deploy sa pamamagitan ng Mesos, Hadoop sa pamamagitan ng Yarn, o sariling manager ng cluster ng Spark.
  • Totoong oras: Totoong oraspagkalkula at mababang latency dahil sa pagkalkula ng memorya.
  • Polyglot: Ito ay isa sa pinakamahalagamga tampokng balangkas na ito dahil maaari itong mai-program sa Scala, Java, Python at R.

Bakit pumunta sa Python?

Kahit na ang Spark ay dinisenyo sa scala, na ginagawang halos 10 beses na mas mabilis kaysa sa Python, ngunit ang Scala ay mas mabilis lamang kapag ang bilang ng mga core na ginagamit ay mas mababa . Tulad ng karamihan sa pagtatasa at proseso sa kasalukuyan ay nangangailangan ng isang malaking bilang ng mga core, ang kalamangan sa pagganap ng Scala ay hindi gaanong karami.



Para sa mga programmer na Python ay medyo madali upang matuto dahil sa syntax at karaniwang mga aklatan nito. Bukod dito, ito ay isang dinamikong nai-type na wika, na nangangahulugang ang mga RDD ay maaaring humawak ng mga bagay ng maraming uri.

Bagaman mayroon si Scala SparkMLlib wala ito sapat na mga aklatan at tool para sa Pag-aaral ng Machine at NLP hangarin Bukod dito, ang Scala ay walang Data Visualization.

Pagsasanay sa PySpark | Apache Spark kasama ang Python | Edureka

Mag-subscribe sa aming youtube channel upang makakuha ng mga bagong update ..!

Pag-set up ng Spark gamit ang Python (PySpark)

Sana marunong kayo .Kaya, sa sandaling mayroon ka naka-zip ang spark file, naka-install ito at idinagdag ang daanan nito sa .bashrc file, kailangan mong mag-typepinagmulan .bashrc

i-export ang SPARK_HOME = /usr/lib/hadoop/spark-2.1.0-bin-hadoop2.7 export PATH = $ PATH: /usr/lib/hadoop/spark-2.1.0-bin-hadoop2.7/bin

Upang buksan ang shell ng pyspark kailangan mong i-type ang utos./bin/pyspark

Spark sa Industriya

Apache Spark dahil sa mga kamangha-manghang mga tampok tulad nito pagpoproseso ng memorya , polyglot at mabilis na pagproseso ay ginagamit ng maraming mga kumpanya sa buong mundo para sa iba't ibang mga layunin sa iba't ibang mga industriya:

Yahoo gumagamit ng Apache Spark para sa mga kakayahan sa Pag-aaral ng Machine upang i-personalize ang mga balita, web page at din para sa target na advertising. Ginagamit nila ang Spark na may sawa upang malaman kung anong uri ng balita - interesado ang mga gumagamit na basahin at ikategorya ang mga kwento ng balita upang malaman kung anong uri ng mga gumagamit ang interesado na basahin ang bawat kategorya ng balita.

TripAdvisor gumagamit ng apache spark upang magbigay ng payo sa milyon-milyong mga manlalakbay sa pamamagitan ng paghahambing ng daan-daang mga website upang mahanap ang pinakamahusay na mga presyo ng hotel para sa mga customer nito. Ang oras na ginugol upang mabasa at maproseso ang mga pagsusuri ng mga hotel sa isang nababasa na format ay tapos na sa tulong ng Apache Spark.

Isa sa pinakamalaking platform sa e-commerce sa buong mundo Alibaba nagpapatakbo ng ilan sa pinakamalaking mga trabaho sa Apache Spark sa buong mundo upang masuri ang daan-daang mga petabyte ng data sa e-commerce platform nito.

PySpark SparkContext at Data Flow

Ang pakikipag-usap tungkol sa Spark with Python, ang pagtatrabaho sa mga RDD ay ginawang posible ng library na Py4j. Ang PySpark Shell ay nag-uugnay sa Python API upang mag-spark core at pinasimulan ang Spark Context. Spark Context ay ang puso ng anumang spark application.

  1. Nag-set up ang konteksto ng Spark ng mga panloob na serbisyo at nagtataguyod ng isang koneksyon sa isang kapaligiran sa pagpapatupad ng Spark.
  2. Ang object ng sparkcontext sa programa ng driver ay nagsasaayos ng lahat ng ipinamahaging proseso at pinapayagan ang paglalaan ng mapagkukunan.
  3. Ang mga Cluster Manager ay nagbibigay ng mga Executor, na proseso ng JVM na may lohika.
  4. Ang object ng SparkContext ay nagpapadala ng application sa mga tagapagpatupad.
  5. Isinasagawa ng SparkContext ang mga gawain sa bawat tagapagpatupad.

itakda ang daan sa klase para sa java

Kaso ng Paggamit ng PySpark KDD

Ngayon tingnan natin ang isang Use Case ng KDD’99 Cup (Kumpetisyon sa Internasyonal na Discovery ng Kaalaman at Data Mining Tools).Dito kukuha kami ng isang maliit na bahagi ng dataset dahil ang orihinal na dataset ay masyadong malaki

import urllib f = urllib.urlretrieve ('http://kdd.ics.uci.edu/databases/kddcup99/kddcup.data_10_percent.gz', 'kddcup.data_10_percent.gz')

Paglikha ng RDD:
Ngayon ay maaari naming gamitin ang file na ito upang lumikha ng aming RDD .

data_file = './kddcup.data_10_percent.gz' raw_data = sc.textFile (data_file)

Pag-filter:

Ipagpalagay Nais naming bilangin kung gaano karami ang normal. mga pakikipag-ugnayan mayroon kami sa aming dataset. Kaya natin salain ang aming raw_data RDD tulad ng sumusunod.

normal_raw_data = raw_data.filter (lambda x: 'normal.' sa x)

COUNT:

Kaya na natin bilangin kung gaano karaming mga elemento mayroon kami sa bagong RDD.

mula sa oras ng pag-import ng oras t0 = time () normal_count = normal_raw_data.count () tt = time () - t0 print 'Mayroong {}' normal 'na mga pakikipag-ugnayan'. format (normal_count) print 'Bilang na nakumpleto sa {} segundo'. format (bilog (tt, 3))

Output:

Mayroong 97278 'normal' na pakikipag-ugnayan Bilang na nakumpleto sa 5.951 segundo

Pagma-map:

Dito sakasonais naming basahin ang aming file ng data bilang isang na-format na CSV. Maaari nating gawin ito sa pamamagitan ng paglalapat ng isang pag-andar ng lambda sa bawat elemento sa RDD tulad ng sumusunod. Dito ay gagamitin namin ang mapa () at kumuha ng () pagbabago.

mula sa pprint import pprint csv_data = raw_data.map (lambda x: x.split (',')) t0 = time () head_rows = csv_data.take (5) tt = time () - t0 print 'Nakumpleto ang parse sa {} segundo '.format (bilog (tt, 3)) pprint (head_rows [0])

Output:

Nakumpleto ang parse sa 1.715 segundo [u'0 ', u'tcp', u'http ', u'SF', u'181 ', u'5450', u'0 ', u'0',. . hindi normal. ']

SPLITTING:

Ngayon nais naming magkaroon ng bawat elemento sa RDD bilang isang pares ng key-halaga kung saan ang susi ay ang tag (hal. normal ) at ang halaga ay ang buong listahan ng mga elemento na kumakatawan sa hilera sa naka-format na file na CSV. Maaari kaming magpatuloy tulad ng sumusunod. Narito ginagamit namin ang linya.split () at mapa ().

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] )
 Output: (hindi normal. ', [u'0', u'tcp ', u'http', u'SF ', u'181', u'5450 ', u'0', u'0 ', u' 0.00 ', u'1.00', .... Hindi normal. '])

ANG KOLEKTONG AKSYON:

Narito gagamitin namin ang pagkolekta () na aksyon. Makukuha nito ang lahat ng mga elemento ng RDD sa memorya. Para sa kadahilanang ito, kailangan itong gamitin nang may pag-iingat kapag nagtatrabaho sa mga malalaking RDD.

t0 = time () all_raw_data = raw_data.collect () tt = time () - t0 i-print ang 'Data na nakolekta sa {} segundo'.format (bilog (tt, 3))

Output:

Nakolekta ang data sa 17.927 segundo

Mas matagal iyon tulad ng anumang iba pang pagkilos na ginamit namin dati, syempre. Ang bawat node ng manggagawa ng Spark na may isang fragment ng RDD ay kailangang i-coordinate upang makuha ang bahagi nito at pagkatapos ay bawasan ang lahat nang magkasama.

Bilang isang huling halimbawa ng pagsasama-sama ng lahat ng nakaraang, nais naming kolektahin ang lahat ngnormalpakikipag-ugnayan bilang mga pares na key-halaga.

# makakuha ng data mula sa file data_file = './kddcup.data_10_percent.gz' raw_data = sc.textFile (data_file) # i-parse sa mga pares ng key-value key_csv_data = raw_data.map (parse_interaction) # filter normal key interactions normal_key_interactions = key_csv_data.filter lambda x: x [0] == 'normal.') # kolektahin ang lahat ng t0 = oras () all_normal = normal_key_interactions.collect () tt = time () - t0 normal_count = len (all_normal) i-print ang 'Data na nakolekta sa {} segundo '.format (bilog (tt, 3)) i-print ang' Mayroong {} 'normal' na mga pakikipag-ugnayan'.format (normal_count)

Output:

Nakolekta ang data sa 12.485 segundo Mayroong 97278 normal na pakikipag-ugnayan

Kaya ito na, guys!

Inaasahan kong nasiyahan ka sa Spark na may Python blog. Kung binabasa mo ito, Binabati kita! Hindi ka na isang baguhan sa PySpark. Subukan ang simpleng halimbawang ito sa iyong mga system ngayon.

Ngayon na naintindihan mo ang mga pangunahing kaalaman ng PySpark, tingnan ang ni Edureka, isang pinagkakatiwalaang kumpanya sa pag-aaral sa online na may isang network na higit sa 250,000 nasiyahan na mga nag-aaral na kumalat sa buong mundo. Edureka’s Python Spark Certification Training gamit ang PySpark ay idinisenyo upang maibigay sa iyo ang kaalaman at kasanayan na kinakailangan upang maging isang matagumpay na Spark Developer gamit ang Python at ihanda ka para sa Cloudera Hadoop at Spark Developer Certification Exam (CCA175).

May tanong ba sa amin? Mangyaring banggitin ito sa seksyon ng mga komento at babalikan ka namin.