PySpark Tutorial - เรียนรู้ Apache Spark โดยใช้ Python



ในบล็อกนี้เกี่ยวกับ PySpark Tutorial คุณจะได้เรียนรู้เกี่ยวกับ PSpark API ซึ่งใช้ในการทำงานกับ Apache Spark โดยใช้ Python Programming Language

ในโลกที่ข้อมูลถูกสร้างขึ้นในอัตราที่น่าตกใจการวิเคราะห์ข้อมูลนั้นอย่างถูกต้องในเวลาที่ถูกต้องมีประโยชน์มาก หนึ่งในกรอบที่น่าทึ่งที่สุดในการจัดการข้อมูลขนาดใหญ่แบบเรียลไทม์และทำการวิเคราะห์คือ Apache Sparkด้วยกัน, หรือ PySpark เป็นหนึ่งในหลักสูตรการรับรองที่เป็นที่ต้องการมากที่สุดทำให้ Scala for Spark ได้เงิน. ดังนั้นในนี้ การสอน PySpark บล็อกฉันจะพูดถึงหัวข้อต่อไปนี้:





PySpark Tutorial: PySpark คืออะไร?

Apache Spark เป็นเฟรมเวิร์กการประมวลผลแบบคลัสเตอร์ที่รวดเร็วซึ่งใช้สำหรับการประมวลผลการสืบค้นและวิเคราะห์ข้อมูลขนาดใหญ่ โดยอาศัยการคำนวณในหน่วยความจำจึงมีข้อได้เปรียบเหนือกรอบข้อมูลขนาดใหญ่อื่น ๆ

คุณสมบัติ PySpark - บทช่วยสอน PySpark - Edureka



เดิมเขียนด้วยภาษาโปรแกรม Scala ชุมชนโอเพ่นซอร์สได้พัฒนาเครื่องมือที่น่าทึ่งเพื่อรองรับ Python สำหรับ Apache Spark PySpark ช่วยให้นักวิทยาศาสตร์ข้อมูลเชื่อมต่อกับ RDDs ใน Apache Spark และ Python ผ่านไลบรารี Py4j. มีคุณสมบัติมากมายที่ทำให้ PySpark เป็นเฟรมเวิร์กที่ดีกว่าคุณสมบัติอื่น ๆ :

  • ความเร็ว: เร็วกว่าเฟรมเวิร์กการประมวลผลข้อมูลขนาดใหญ่แบบเดิม 100 เท่า
  • การแคชที่มีประสิทธิภาพ: เลเยอร์การเขียนโปรแกรมอย่างง่ายให้ความสามารถในการแคชและการคงอยู่ของดิสก์ที่มีประสิทธิภาพ
  • การปรับใช้: สามารถปรับใช้ผ่าน Mesos, Hadoop ผ่าน Yarn หรือตัวจัดการคลัสเตอร์ของ Spark
  • เรียลไทม์: การคำนวณแบบเรียลไทม์และเวลาแฝงต่ำเนื่องจากการคำนวณในหน่วยความจำ
  • พูดได้หลายภาษา: รองรับการเขียนโปรแกรมใน Scala, Java, Python และ R

มาดูบล็อกบทช่วยสอน PySpark ของเราและดูว่า Spark ถูกนำไปใช้ในอุตสาหกรรมใดบ้าง

PySpark ในอุตสาหกรรม

ทุกอุตสาหกรรมหมุนรอบ Big Data และมีการวิเคราะห์ข้อมูลขนาดใหญ่ที่ใด เรามาดูอุตสาหกรรมต่างๆที่ใช้ Apache Spark กัน



ครึ่ง เป็นหนึ่งในอุตสาหกรรมที่ใหญ่ที่สุดที่เติบโตไปสู่การสตรีมออนไลน์ Netflix ใช้ Apache Spark สำหรับการประมวลผลสตรีมแบบเรียลไทม์เพื่อให้คำแนะนำออนไลน์ส่วนบุคคลแก่ลูกค้า มันประมวลผล 450 พันล้าน เหตุการณ์ต่อวันที่ไหลไปยังแอปพลิเคชันฝั่งเซิร์ฟเวอร์

การเงิน เป็นอีกภาคส่วนที่การประมวลผลแบบเรียลไทม์ของ Apache Spark มีบทบาทสำคัญ ธนาคารต่างๆใช้ Spark เพื่อเข้าถึงและวิเคราะห์โปรไฟล์โซเชียลมีเดียเพื่อรับข้อมูลเชิงลึกที่สามารถช่วยในการตัดสินใจทางธุรกิจได้อย่างเหมาะสม การประเมินความเสี่ยงด้านเครดิต โฆษณาที่ตรงเป้าหมายและการแบ่งกลุ่มลูกค้า ลูกค้ากำลังจะเปลี่ยนใจจากคุณ ยังลดลงโดยใช้ Spark การตรวจจับการฉ้อโกง เป็นหนึ่งในพื้นที่ที่ใช้กันอย่างแพร่หลายของ Machine Learning ซึ่ง Spark มีส่วนเกี่ยวข้อง

ความแตกต่างระหว่าง c ++ และ java คืออะไร

ดูแลสุขภาพ ผู้ให้บริการใช้ Apache Spark เพื่อ วิเคราะห์บันทึกผู้ป่วย พร้อมกับข้อมูลทางคลินิกที่ผ่านมาเพื่อระบุว่าผู้ป่วยรายใดมีแนวโน้มที่จะเผชิญกับปัญหาสุขภาพหลังจากออกจากคลินิก Apache Spark ใช้ใน ลำดับจีโนม เพื่อลดเวลาที่ต้องใช้ในการประมวลผลข้อมูลจีโนม

ค้าปลีกและอีคอมเมิร์ซ เป็นอุตสาหกรรมที่ไม่มีใครคาดคิดว่าจะทำงานได้โดยไม่ต้องใช้การวิเคราะห์และการโฆษณาที่กำหนดเป้าหมาย หนึ่งในแพลตฟอร์มอีคอมเมิร์ซที่ใหญ่ที่สุดในปัจจุบัน อาลีบาบา ดำเนินงาน Spark Jobs ที่ใหญ่ที่สุดในโลกเพื่อวิเคราะห์ข้อมูลเพตะไบต์ อาลีบาบาดำเนินการ การแยกคุณลักษณะ ในข้อมูลรูปภาพ อีเบย์ ใช้ 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 RDDs

เมื่อพูดถึงการคำนวณแบบกระจายซ้ำ ๆ เช่นการประมวลผลข้อมูลในหลาย ๆ งานในการคำนวณเราจำเป็นต้องใช้ซ้ำหรือแบ่งปันข้อมูลระหว่างงานหลาย ๆ งาน เฟรมเวิร์กก่อนหน้านี้เช่น Hadoop มีปัญหาในขณะที่จัดการกับการดำเนินการ / งานหลายอย่างเช่น

  • การจัดเก็บข้อมูลในที่เก็บข้อมูลระดับกลางเช่น HDFS
  • งาน I / O หลายงานทำให้การคำนวณช้า
  • การจำลองแบบและการทำให้เป็นอนุกรมซึ่งจะทำให้กระบวนการช้าลง

RDD พยายามแก้ไขปัญหาทั้งหมดโดยเปิดใช้งานการคำนวณในหน่วยความจำแบบกระจายที่ทนต่อความผิดพลาด RDD ย่อมาจาก ชุดข้อมูลแบบกระจายที่ยืดหยุ่น RDD เป็นนามธรรมของหน่วยความจำแบบกระจายซึ่งช่วยให้โปรแกรมเมอร์ทำการคำนวณในหน่วยความจำบนคลัสเตอร์ขนาดใหญ่ในลักษณะที่ทนต่อความผิดพลาด พวกเขาคือ คอลเลกชันออบเจ็กต์แบบอ่านอย่างเดียว แบ่งพาร์ติชันในชุดของเครื่องที่สามารถสร้างใหม่ได้หากพาร์ติชันสูญหาย มีการดำเนินการหลายอย่างใน RDD:

  • การเปลี่ยนแปลง: การแปลงสร้างชุดข้อมูลใหม่จากชุดข้อมูลที่มีอยู่ ขี้เกียจประเมิน
  • การดำเนินการ: Spark บังคับให้การคำนวณสำหรับการดำเนินการเฉพาะเมื่อมีการเรียกใช้การดำเนินการบน RDD

เรามาทำความเข้าใจเกี่ยวกับการเปลี่ยนแปลงการดำเนินการและฟังก์ชั่นกัน

การอ่านไฟล์และการแสดงองค์ประกอบยอดนิยม n:

rdd = sc.textFile ('ไฟล์: /// home / edureka / เดสก์ท็อป / ตัวอย่าง') rdd.take (n)

เอาท์พุต:

[u'Deforestation เกิดขึ้นเป็นประเด็นหลักด้านสิ่งแวดล้อมและสังคมซึ่งตอนนี้กลายเป็นปีศาจที่ทรงพลังมากกว่า 'เราต้องรู้ถึงสาเหตุผลกระทบและวิธีแก้ไขปัญหาที่เกิดขึ้นเนื่องจากการตัดไม้ทำลายป่า ', u' เราได้จัดทำบทความเรียงความยาวและสั้นเกี่ยวกับการตัดไม้ทำลายป่าไว้หลายย่อหน้าเพื่อช่วยให้เด็ก ๆ และบุตรหลานของคุณรับทราบปัญหาและเข้าร่วมการแข่งขันเขียนเรียงความในโรงเรียนหรือนอกโรงเรียน ', คุณ' คุณสามารถเลือกเรียงความเกี่ยวกับการตัดไม้ทำลายป่าที่ระบุไว้ด้านล่างตามมาตรฐานชั้นเรียน ', คุณ' การทำลายป่าเกิดขึ้นเป็นปัญหาสำคัญระดับโลกต่อสังคมและสิ่งแวดล้อม ']

การแปลงเป็นตัวพิมพ์เล็กและการแยก: (ตัวพิมพ์เล็กและตัวแยก)

def Func (เส้น): 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', 'และ', 'be', 'been', 'from', 'had' , 'ฉัน', 'ฉัน', 'ทำไม', 'กับ'] rdd2 = rdd1.filter (แลมบ์ดา z: z ไม่อยู่ใน stop_words) 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 และทำการทำนายในอนาคตกัน ดังนั้นที่นี่เราจะใช้ข้อมูลบาสเก็ตบอลของผู้เล่นทั้งหมดของ NBA ตั้งแต่นั้นมา พ.ศ. 2523 [ปีแห่งการแนะนำตัวชี้ 3 ตัว]

กำลังโหลดข้อมูล:

df = spark.read.option ('header', 'true') .option ('inferSchema', 'true') .csv ('file: ///home/edureka/Downloads/season_totals.csv')

คอลัมน์การพิมพ์:

พิมพ์ (df.columns)

เอาท์พุต:

['_c0', 'ผู้เล่น', 'pos', 'อายุ', '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:

เรากำลังวิเคราะห์จำนวนเฉลี่ยของ พยายาม 3 จุด สำหรับแต่ละฤดูกาลในระยะเวลาที่ จำกัด 36 นาที [ช่วงเวลาที่สอดคล้องกับเกม NBA เต็มโดยประมาณและพักผ่อนให้เพียงพอ] เราคำนวณเมตริกนี้โดยใช้จำนวนการพยายามยิงประตู 3 จุด (fg3a) และนาทีที่เล่น (mp) จากนั้นพล็อตผลลัพธ์โดยใช้ matlplotlib .

จาก pyspark.sql.functions นำเข้า 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 เป็น plt import seaborn เป็น 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), แบบอักษร = 9, arrowprops = dict (facecolor =' สีเทา ', shrink = 0, linewidth = 2)) plt.annotate (' NBA ย้ายในเส้น 3 จุด ', xy = (1996, 2.4), xytext = (1991.5, 2.7), แบบอักษรขนาด = 9, arrowprops = dict (facecolor = 'grey', shrink = 0, linewidth = 2)) plt.annotate ('NBA ย้ายกลับเส้น 3 จุด', xy = (1998, 2. ), xytext = (1998.5, 2.4), fontize = 9, arrowprops = dict (facecolor = 'สีเทา', ลดขนาด = 0, linewidth = 2))

เอาท์พุต:

การถดถอยเชิงเส้นและ VectorAssembler:

เราสามารถใส่แบบจำลองการถดถอยเชิงเส้นเข้ากับเส้นโค้งนี้เพื่อจำลองจำนวนครั้งที่พยายามยิงในอีก 5 ปีข้างหน้า เราต้องแปลงข้อมูลของเราโดยใช้ฟังก์ชัน VectorAssembler เป็นคอลัมน์เดียว มันคือ ความต้องการ สำหรับ API การถดถอยเชิงเส้นใน MLlib

จาก pyspark.ml.feature นำเข้า 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 (training)

การใช้โมเดลที่ได้รับการฝึกอบรมกับชุดข้อมูล:

เรานำโมเดลออบเจ็กต์ที่ได้รับการฝึกฝนมาใช้กับชุดการฝึกอบรมเดิมของเราพร้อมกับข้อมูลในอนาคตอีก 5 ปี

จาก 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]) รวบรวม () 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 (' Year ') plt.ylabel (' จำนวนครั้งที่พยายาม ') plt.legend (loc = 4) _ = plt.title (' ผู้เล่นพยายาม 3 คะแนนโดยเฉลี่ย (ต่อ 36 นาที) ') plt.tight_layout () plt.savefig (' / home / edureka / ดาวน์โหลด / รูปภาพ / REGRESSION.png ')

เอาท์พุต:

และด้วยกราฟนี้เรามาถึงจุดสิ้นสุดของบล็อกการสอน PySpark นี้

นี่ไงพวกกู!

ฉันหวังว่าพวกคุณจะมีความคิดว่า PySpark คืออะไรทำไม Python จึงเหมาะที่สุดสำหรับ Spark, RDD และเหลือบของ Machine Learning กับ Pyspark ในบล็อกบทช่วยสอน PySpark นี้ ขอแสดงความยินดีคุณไม่ใช่ Newbie ของ PySpark อีกต่อไป หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ PySpark และทำความเข้าใจเกี่ยวกับกรณีการใช้งานในอุตสาหกรรมต่างๆโปรดดูที่ จุดประกายด้วย Python บล็อก

ตอนนี้คุณเข้าใจแล้วว่า Pyspark คืออะไรลองดูไฟล์ โดย Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ซึ่งมีเครือข่ายผู้เรียนที่พึงพอใจมากกว่า 250,000 คนกระจายอยู่ทั่วโลก Edureka’s การฝึกอบรมการรับรอง Python Spark โดยใช้ PySpark ได้รับการออกแบบมาเพื่อให้คุณมีความรู้และทักษะที่จำเป็นในการเป็น Spark Developer ที่ประสบความสำเร็จโดยใช้ Python และเตรียมคุณสำหรับการสอบ Cloudera Hadoop และ Spark Developer Certification (CCA175)