บทนำสู่ Spark ด้วย Python - PySpark สำหรับผู้เริ่มต้น



Apache Spark ได้เข้ายึดครองโลก Big Data & Analytics และ Python เป็นภาษาโปรแกรมที่เข้าถึงได้มากที่สุดที่ใช้ในอุตสาหกรรมปัจจุบัน ในบล็อกนี้เราจะเรียนรู้เกี่ยวกับ Pyspark (จุดประกายด้วยงูหลาม) เพื่อให้ได้สิ่งที่ดีที่สุดจากทั้งสองโลก

เป็นกรอบงานที่ใช้กันอย่างแพร่หลายมากที่สุดในการจัดการและทำงานกับ Big Data AND Python เป็นหนึ่งในภาษาโปรแกรมที่ใช้กันอย่างแพร่หลายสำหรับการวิเคราะห์ข้อมูลการเรียนรู้ของเครื่องและอื่น ๆ อีกมากมาย ทำไมไม่ใช้ร่วมกันล่ะ? นี่คือที่ จุดประกายด้วย Python หรือที่เรียกว่า PySpark เข้ามาที่ภาพ.

ด้วยเงินเดือนเฉลี่ย 110,000 เหรียญต่อปีสำหรับนักพัฒนา Apache Spark ไม่ต้องสงสัยเลยว่า Spark ถูกใช้ในอุตสาหกรรมนี้มาก เพราะว่าของมันชุดไลบรารีที่สมบูรณ์ Python ถูกใช้โดยที่ปัจจุบันนักวิทยาศาสตร์ข้อมูลและผู้เชี่ยวชาญด้าน Analytics ส่วนใหญ่ การรวม Python เข้ากับ Spark เป็นของขวัญที่สำคัญสำหรับชุมชน Spark ได้รับการพัฒนาในภาษา Scala ซึ่งคล้ายกับ Java มาก รวบรวมรหัสโปรแกรมเป็น bytecode สำหรับ 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 จะได้รับการออกแบบในสกาลาซึ่งทำให้เร็วกว่า Python เกือบ 10 เท่า แต่ Scala จะเร็วกว่าเมื่อไฟล์ จำนวนคอร์ที่ใช้น้อยกว่า . เนื่องจากการวิเคราะห์และกระบวนการส่วนใหญ่ในปัจจุบันต้องการคอร์จำนวนมากข้อได้เปรียบด้านประสิทธิภาพของ Scala จึงมีไม่มากนัก



การถดถอยโลจิสติกในรหัสหลาม

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

แม้ว่าสกาล่าจะมี SparkMLlib มันไม่มี ไลบรารีและเครื่องมือที่เพียงพอสำหรับ Machine Learning และ NLP วัตถุประสงค์ ยิ่งไปกว่านั้น Scala ยังขาด Data Visualization

การฝึกอบรม PySpark | Apache Spark พร้อม Python | Edureka

สมัครสมาชิกช่อง YouTube ของเราเพื่อรับการอัปเดตใหม่ .. !

การตั้งค่า Spark ด้วย Python (PySpark)

ฉันหวังว่าพวกคุณจะรู้วิธีการ .เมื่อคุณทำได้ คลายซิป ไฟล์ spark ติดตั้ง และเพิ่มเส้นทางสู่ .bashrc คุณต้องพิมพ์ไฟล์ที่มา. bashrc

ส่งออก SPARK_HOME = /usr/lib/hadoop/spark-2.1.0-bin-hadoop2.7 เส้นทางการส่งออก = $ PATH: /usr/lib/hadoop/spark-2.1.0-bin-hadoop2.7/bin

ในการเปิด pyspark shell คุณต้องพิมพ์คำสั่ง./bin/pyspark

จุดประกายในอุตสาหกรรม

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

Yahoo ใช้ Apache Spark สำหรับความสามารถของ Machine Learning เพื่อปรับแต่งข่าวสารหน้าเว็บและสำหรับการโฆษณาเป้าหมาย พวกเขาใช้ Spark กับ python เพื่อค้นหาประเภทของข่าว - ผู้ใช้สนใจที่จะอ่านและจัดหมวดหมู่ข่าวเพื่อค้นหาว่าผู้ใช้ประเภทใดที่จะสนใจอ่านข่าวแต่ละประเภท

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

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

PySpark SparkContext และ Data Flow

เมื่อพูดถึง Spark กับ Python แล้วการทำงานกับ RDD นั้นสามารถทำได้โดยไลบรารี Py4j PySpark Shell เชื่อมโยง Python API เพื่อจุดประกายคอร์และเริ่มต้น Spark Context บริบทจุดประกาย เป็นหัวใจสำคัญของการใช้งาน Spark

  1. บริบท Spark ตั้งค่าบริการภายในและสร้างการเชื่อมต่อกับสภาพแวดล้อมการดำเนินการของ Spark
  2. ออบเจ็กต์ sparkcontext ในโปรแกรมไดรเวอร์จะประสานงานกระบวนการกระจายทั้งหมดและอนุญาตให้จัดสรรทรัพยากร
  3. Cluster Managers จัดเตรียม Executors ซึ่งเป็นกระบวนการ JVM พร้อมตรรกะ
  4. วัตถุ SparkContext ส่งแอปพลิเคชันไปยังตัวดำเนินการ
  5. SparkContext รันงานในแต่ละตัวดำเนินการ

PySpark KDD Use Case

ตอนนี้เรามาดูกรณีการใช้งานของ KDD’99 คัพ (International Knowledge Discovery and Data Mining Tools Competition).ในที่นี้เราจะใช้เศษส่วนของชุดข้อมูลเนื่องจากชุดข้อมูลเดิมมีขนาดใหญ่เกินไป

นำเข้า 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 (data_file)

การกรอง:

สมมติว่าเราต้องการนับจำนวนปกติ ปฏิสัมพันธ์ที่เรามีในชุดข้อมูลของเรา เราทำได้ กรอง raw_data RDD ของเราดังต่อไปนี้

normal_raw_data = raw_data.filter (แลมบ์ดา x: 'ปกติ' ใน x)

นับ:

ตอนนี้เราทำได้ นับ เรามีองค์ประกอบกี่อย่างใน RDD ใหม่

จากเวลานำเข้า t0 = เวลา () normal_count = normal_raw_data.count () tt = time () - t0 พิมพ์ 'มี {}' normal 'interactions'.format (normal_count) พิมพ์' นับเสร็จใน {} วินาที 'รูปแบบ (รอบ (tt, 3))

เอาท์พุต:

มีการโต้ตอบ 97278 'ปกติ' นับเสร็จสมบูรณ์ใน 5.951 วินาที

การทำแผนที่:

ในเรื่องนี้กรณีเราต้องการอ่านไฟล์ข้อมูลของเราในรูปแบบ CSV เราสามารถทำได้โดยใช้ฟังก์ชันแลมด้ากับแต่ละองค์ประกอบใน RDD ดังนี้ ที่นี่เราจะใช้ไฟล์ แผนที่ () และใช้ () การเปลี่ยนแปลง

จากการนำเข้า pprint pprint csv_data = raw_data.map (lambda x: x.split (',')) t0 = time () head_rows = csv_data.take (5) tt = time () - t0 print 'แยกวิเคราะห์เสร็จใน {} วินาที '.format (รอบ (tt, 3)) pprint (head_rows [0])

เอาท์พุต:

แยกวิเคราะห์เสร็จใน 1.715 วินาที [u'0 ', u'tcp', u'http ', u'SF', u'181 ', u'5450', u'0 ', u'0',. . คุณผิดปกติ ']

แยก:

ตอนนี้เราต้องการให้แต่ละองค์ประกอบใน RDD เป็นคู่คีย์ - ค่าโดยที่คีย์คือแท็ก (เช่น ปกติ ) และค่าคือรายการองค์ประกอบทั้งหมดที่แสดงถึงแถวในไฟล์ที่จัดรูปแบบ CSV เราสามารถดำเนินการได้ดังนี้ ที่นี่เราใช้ไฟล์ line.split () และ map ()

def parse_interaction (บรรทัด): 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'normal. ', [u'0', u'tcp ', u'http', u'SF ', u'181', u'5450 ', u'0', u'0 ', u' 0.00 ', u'1.00', .... U'normal. '])

การดำเนินการรวบรวม:

ที่นี่เราจะใช้การดำเนินการ collect () มันจะรับองค์ประกอบทั้งหมดของ RDD เข้าสู่หน่วยความจำ ด้วยเหตุนี้จึงต้องใช้ความระมัดระวังเมื่อทำงานกับ RDD ขนาดใหญ่

t0 = time () all_raw_data = raw_data.collect () tt = time () - t0 พิมพ์ 'ข้อมูลที่รวบรวมใน {} วินาที' รูปแบบ (รอบ (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 lambda x: x [0] == 'normal.') # collect all t0 = time () all_normal = normal_key_interactions.collect () tt = time () - t0 normal_count = len (all_normal) print 'ข้อมูลที่รวบรวมใน {} วินาที '.format (round (tt, 3)) พิมพ์' มีรูปแบบการโต้ตอบ {} 'ปกติ' (normal_count)

เอาท์พุต:

ข้อมูลที่รวบรวมใน 12.485 วินาทีมีการโต้ตอบปกติ 97278

นี่มันพวก!

ฉันหวังว่าคุณจะสนุกกับบล็อก Spark with Python นี้ หากคุณกำลังอ่านข้อความนี้ขอแสดงความยินดี! คุณไม่ใช่มือใหม่ของ PySpark อีกต่อไป ลองใช้ตัวอย่างง่ายๆนี้ในระบบของคุณตอนนี้.

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

มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นแล้วเราจะติดต่อกลับไป