PySpark Dataframe Tutorial - การเขียนโปรแกรม PySpark ด้วย Dataframes



ในบล็อกบทช่วยสอน PySpark Dataframe นี้คุณจะได้เรียนรู้เกี่ยวกับการเปลี่ยนแปลงและการกระทำใน Apache Spark พร้อมตัวอย่างมากมาย

Dataframes เป็นคำที่แพร่หลายในอุตสาหกรรมปัจจุบัน ผู้คนมักจะใช้กับภาษายอดนิยมที่ใช้ในการวิเคราะห์ข้อมูลเช่น Python, Scala และ Rนอกจากนี้ด้วยความต้องการที่ชัดเจนในการจัดการการวิเคราะห์ที่ซับซ้อนและงานที่ซับซ้อนสำหรับ Big Data, Python for Spark หรือ ได้กลายเป็นหนึ่งในทักษะที่เป็นที่ต้องการมากที่สุดในอุตสาหกรรมปัจจุบันแล้วทำไมทุกคนถึงใช้มันกันมาก? มาทำความเข้าใจกับสิ่งนี้ด้วย PySpark Dataframe Tutorial บล็อก ในบล็อกนี้ฉันจะพูดถึงหัวข้อต่อไปนี้:





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

โดยทั่วไป Dataframes หมายถึงโครงสร้างข้อมูลซึ่งมีลักษณะเป็นตาราง มันแสดงถึงแถวซึ่งแต่ละส่วนประกอบด้วยข้อสังเกตจำนวนหนึ่ง แถวสามารถมีรูปแบบข้อมูลที่หลากหลาย ( ต่างกัน ) ในขณะที่คอลัมน์สามารถมีข้อมูลประเภทข้อมูลเดียวกันได้ ( เป็นเนื้อเดียวกัน ). โดยปกติแล้วเฟรมข้อมูลจะมีข้อมูลเมตาบางอย่างนอกเหนือจากข้อมูลเช่นชื่อคอลัมน์และแถว

Dataframe-Pyspark-Dataframe-Tutorial



เราสามารถพูดได้ว่า Dataframes ไม่ใช่อะไรเลยนอกจากโครงสร้างข้อมูล 2 มิติซึ่งคล้ายกับตาราง SQL หรือสเปรดชีต ตอนนี้เรามาดูบทช่วยสอน PySpark Dataframe และทำความเข้าใจว่าเหตุใดเราจึงต้องการ Pyspark Dataframe?

ทำไมเราต้องใช้ Dataframes?

1. การประมวลผลข้อมูลที่มีโครงสร้างและกึ่งโครงสร้าง



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

2. ส ใบอนุญาตและ Dicing

กรอบข้อมูลกโดยปกติแล้ว PI จะสนับสนุนวิธีการที่ซับซ้อนสำหรับ หั่นและหั่น ข้อมูล. ซึ่งรวมถึงการดำเนินการn เช่น 'การเลือก' แถวคอลัมน์และเซลล์ตามชื่อหรือตามหมายเลขการกรองแถว ฯลฯ ข้อมูลทางสถิติมักจะยุ่งมากและมีค่าที่ขาดหายไปและไม่ถูกต้องและการละเมิดช่วง ดังนั้นคุณสมบัติที่สำคัญอย่างยิ่งของเฟรมข้อมูลคือการจัดการข้อมูลที่ขาดหายไปอย่างชัดเจน

3. แหล่งข้อมูล

DataFrame รองรับรูปแบบข้อมูลและแหล่งข้อมูลที่หลากหลายเราจะตรวจสอบสิ่งนี้ในภายหลังในบล็อกบทช่วยสอน Pyspark Dataframe พวกเขาสามารถรับข้อมูลจากแหล่งต่างๆ

4. รองรับหลายภาษา

มีการรองรับ API สำหรับภาษาต่างๆเช่น Python, R, Scala, Java,ซึ่งทำให้ง่ายต่อการใช้โดยผู้ที่มีพื้นฐานการเขียนโปรแกรมที่แตกต่างกัน

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

คุณสมบัติของ Dataframes

  • Dataframes คือ กระจาย ในธรรมชาติซึ่งทำให้ Fault Tolerant และโครงสร้างข้อมูลที่มีอยู่สูง
  • ขี้เกียจประเมิน เป็นกลยุทธ์การประเมินผลซึ่งเก็บการประเมินนิพจน์ไว้จนกว่าจะต้องการค่า หลีกเลี่ยงการประเมินซ้ำ ๆ การประเมิน Lazy ใน Spark หมายความว่าการดำเนินการจะไม่เริ่มต้นจนกว่าการดำเนินการจะถูกกระตุ้น ใน Spark ภาพของการประเมินความขี้เกียจเกิดขึ้นเมื่อการเปลี่ยนแปลงของ Spark เกิดขึ้น
  • Dataframes คือ ไม่เปลี่ยนรูป ในธรรมชาติ. โดยไม่เปลี่ยนรูปฉันหมายความว่ามันเป็นวัตถุที่มีสถานะ ไม่สามารถแก้ไขได้ หลังจากสร้างเสร็จแล้วแต่เราสามารถแปลงร่างได้ของมันค่าโดยใช้แน่นอนการเปลี่ยนแปลงเช่นใน RDD

PySpark Dataframe Sources

Dataframes ใน Pyspark สามารถสร้างได้หลายวิธี:

สามารถโหลดข้อมูลผ่านไฟล์ CSV, JSON, XML หรือไฟล์ Parquet นอกจากนี้ยังสามารถสร้างโดยใช้ไฟล์ RDD และผ่านฐานข้อมูลอื่น ๆ เช่น รัง หรือ คาสซานดรา เช่นกัน. นอกจากนี้ยังสามารถรับข้อมูลจาก HDFS หรือระบบไฟล์ภายในเครื่อง

การสร้าง Dataframe

มาดูบล็อกการสอน PySpark Dataframe และทำความเข้าใจวิธีสร้าง Dataframes กัน

เราจะสร้างอินสแตนซ์พนักงานและแผนก

จากการนำเข้า pyspark.sql * พนักงาน = แถว ('firstName', 'lastName', 'อีเมล', 'เงินเดือน') พนักงาน 1 = พนักงาน ('Basher', 'armbrust', 'bash@edureka.co', 100000) staff2 = พนักงาน ('Daniel', 'meng', 'daniel@stanford.edu', 120000) พนักงาน 3 = พนักงาน ('Muriel', ไม่มี, 'muriel@waterloo.edu', 140000) staff4 = พนักงาน ('Rachel', 'wendell ',' rach_3@edureka.co ', 160000) staff5 = พนักงาน (' Zach ',' galifianakis ',' zach_g@edureka.co ', 160000) พิมพ์ (พนักงาน [0]) พิมพ์ (พนักงาน 3) แผนก 1 = แถว (id = '123456', name = 'HR') department2 = Row (id = '789012', name = 'OPS') department3 = Row (id = '345678', name = 'FN') department4 = Row (id = ' 901234 ', ชื่อ =' DEV ')

ต่อไปเราจะสร้างอินสแตนซ์ DepartmentWithEmployees จาก Employee และ Departments

departmentWithEmployees1 = Row (แผนก = แผนก 1, พนักงาน = [พนักงาน 1, พนักงาน 2, พนักงาน 5]) departmentWithEmployees2 = แถว (แผนก = แผนก 2, พนักงาน = [พนักงาน 3, พนักงาน 4]) departmentWithEmployees3 = แถว (แผนก = แผนก 3, พนักงาน = [พนักงาน 1, พนักงาน 4, พนักงาน 3) ]) departmentWithEmployees4 = Row (แผนก = แผนก 4, พนักงาน = [พนักงาน 2, พนักงาน 3])

มาสร้าง Dataframe ของเราจากรายการแถวกัน

departmentWithEmployees_Seq = [departmentWithEmployees1, departmentWithEmployees2] dframe = spark.createDataFrame (departmentWithEmployees_Seq) display (dframe) dframe.show ()

Pyspark Dataframes ตัวอย่างที่ 1: ชุดข้อมูล FIFA World Cup

ที่นี่เราได้นำชุดข้อมูลผู้เล่นฟุตบอลโลก FIFA เราจะโหลดข้อมูลนี้ซึ่งอยู่ในรูปแบบ CSVเป็นdataframe จากนั้นเราจะเรียนรู้เกี่ยวกับการเปลี่ยนแปลงและการดำเนินการต่างๆที่สามารถทำได้บนดาต้าเฟรมนี้

การอ่านข้อมูลจากไฟล์ CSV

มาโหลดข้อมูลจากไฟล์ CSV กัน ที่นี่เราจะใช้ไฟล์ spark.read.csv วิธีการโหลดข้อมูลลงใน dataframe fifa_df วิธีการที่แท้จริงคือ spark.read.format [csv / json] .

fifa_df = spark.read.csv ('path-of-file / fifa_players.csv', inferSchema = True, header = True) fifa_df.show ()

Schema ของ Dataframe

หากต้องการดูสคีมาคือ โครงสร้างของดาต้าเฟรมเราจะใช้ไฟล์ printSchema วิธี. สิ่งนี้จะให้คอลัมน์ต่างๆในดาต้าเฟรมของเราพร้อมกับประเภทข้อมูลและเงื่อนไขที่เป็นโมฆะสำหรับคอลัมน์นั้น ๆ

fifa_df.printSchema ()

ชื่อคอลัมน์และจำนวน (แถวและคอลัมน์)

เมื่อเราต้องการดูชื่อและจำนวนแถวและคอลัมน์ของ Dataframe หนึ่ง ๆ เราใช้วิธีการต่อไปนี้

fifa_df.columns // Column Names fifa_df.count () // Row Count len ​​(fifa_df.columns) // จำนวนคอลัมน์

37784 8

การอธิบายคอลัมน์เฉพาะ

หากเราต้องการดูข้อมูลสรุปของคอลัมน์ใดคอลัมน์หนึ่งของ Dataframe เราใช้ไฟล์ อธิบาย วิธี. วิธีนี้ให้ข้อมูลสรุปทางสถิติของคอลัมน์ที่กำหนดหากไม่ได้ระบุไว้จะให้ข้อมูลสรุปทางสถิติของดาต้าเฟรม

รูปแบบใน python คืออะไร
fifa_df.describe ('ชื่อโค้ช'). แสดง () fifa_df.describe ('ตำแหน่ง'). แสดง ()

การเลือกหลายคอลัมน์

หากเราต้องการเลือกคอลัมน์ใดคอลัมน์หนึ่งจากดาต้าเฟรมเราใช้ไฟล์ เลือก วิธี.

fifa_df.select ('ชื่อผู้เล่น', 'ชื่อโค้ช') แสดง ()

การเลือกหลายคอลัมน์ที่แตกต่างกัน

fifa_df.select ('ชื่อผู้เล่น', 'ชื่อโค้ช'). ชัดเจน (). แสดง ()

การกรองข้อมูล

ในการกรองข้อมูลตามเงื่อนไขที่ระบุเราใช้ไฟล์ กรอง คำสั่ง ที่นี่เรากำลังกรอง dataframe ของเราตามเงื่อนไขที่ Match ID ต้องเท่ากับ 1096 จากนั้นเรากำลังคำนวณจำนวนระเบียน / แถวในเอาต์พุตที่กรอง

fifa_df.filter (fifa_df.MatchID == '1096') แสดง () fifa_df.filter (fifa_df.MatchID == '1096') นับ () // เพื่อรับจำนวน

การกรองข้อมูล (หลายพารามิเตอร์)

เราสามารถกรองข้อมูลของเราตามเงื่อนไขต่างๆ (AND หรือ OR)

fifa_df.filter ((fifa_df.Position == 'C') && (fifa_df.Event == 'G40' ')). แสดง ()

การเรียงลำดับข้อมูล (OrderBy)

ในการจัดเรียงข้อมูลเราใช้ไฟล์ สั่งโดย วิธี. โดยค่าเริ่มต้นจะเรียงลำดับจากน้อยไปมาก แต่เราสามารถเปลี่ยนเป็นลำดับจากมากไปหาน้อยได้เช่นกัน

fifa_df.orderBy (fifa_df.MatchID) .show ()

PySpark Dataframes ตัวอย่างที่ 2: Superheros Dataset

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

ที่นี่เราจะโหลดข้อมูลในลักษณะเดียวกับที่เราทำก่อนหน้านี้

Superhero_df = spark.read.csv ('path-of file / superheros.csv', inferSchema = True, header = True) Superhero_df.show (10)

การกรองข้อมูล

Superhero_df.filter (Superhero_df.Gender == 'Male'). count () // Male Heros Count Superhero_df.filter (Superhero_df.Gender == 'Female') count () // Female Heros Count

การจัดกลุ่มข้อมูล

GroupBy ใช้เพื่อจัดกลุ่มดาต้าเฟรมตามคอลัมน์ที่ระบุ ที่นี่เรากำลังจัดกลุ่มดาต้าเฟรมตามคอลัมน์ Race แล้วด้วย นับ เราสามารถค้นหาจำนวนของการแข่งขันนั้น ๆ ได้

Race_df = Superhero_df.groupby ('การแข่งขัน') .count () .show ()

ดำเนินการสืบค้น SQL

นอกจากนี้เรายังสามารถส่งคำสั่ง SQL ไปยังดาต้าเฟรมได้โดยตรงเพื่อที่เราจะต้องสร้างตารางจากดาต้าเฟรมโดยใช้ registerTempTable วิธีการแล้วใช้ sqlContext.sql () เพื่อส่งผ่านแบบสอบถาม SQL

Superhero_df.registerTempTable ('superhero_table') sqlContext.sql ('เลือก * จาก superhero_table') แสดง ()

sqlContext.sql ('เลือกเฉพาะ (Eye_color) จาก superhero_table') แสดง ()

sqlContext.sql ('เลือกที่แตกต่าง (Eye_color) จาก superhero_table') count ()

2. 3

sqlContext.sql ('เลือกสูงสุด (น้ำหนัก) จาก superhero_table') แสดง ()

และด้วยเหตุนี้เราจึงมาถึงจุดสิ้นสุดของบทแนะนำ PySpark Dataframe

นี่ไงพวกกู!

ฉันหวังว่าพวกคุณจะมีความคิดว่า PySpark Dataframe คืออะไรทำไมถึงถูกใช้ในอุตสาหกรรมและฟีเจอร์ต่างๆในบล็อกการสอน PySpark Dataframe นี้ ขอแสดงความยินดีคุณไม่ได้เป็นมือใหม่สำหรับ Dataframes อีกต่อไป หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ PySpark และทำความเข้าใจเกี่ยวกับกรณีการใช้งานในอุตสาหกรรมต่างๆโปรดดูที่ จุดประกายด้วย Python และ การสอน PySpark บล็อก