Hướng dẫn PySpark Dataframe - Lập trình PySpark với Dataframe



Trong blog hướng dẫn PySpark Dataframe này, bạn sẽ tìm hiểu về các phép biến đổi và hành động trong Apache Spark với nhiều ví dụ.

Dataframe là một từ thông dụng trong ngành công nghiệp ngày nay. Mọi người có xu hướng sử dụng nó với các ngôn ngữ phổ biến được sử dụng để Phân tích dữ liệu như Python, Scala và R.Ngoài ra, với nhu cầu rõ ràng là xử lý các nhiệm vụ phân tích và trộn phức tạp cho Dữ liệu lớn, Python cho Spark hoặc đã trở thành một trong những kỹ năng được tìm kiếm nhiều nhất trong ngành hiện nay.Vậy tại sao nó lại được mọi người sử dụng nhiều đến vậy? Hãy hiểu điều này với Hướng dẫn về khung dữ liệu PySpark Blog. Trong blog này, tôi sẽ đề cập đến các chủ đề sau:





Hướng dẫn về PySpark Dataframe: Dataframe là gì?

Dataframe thường đề cập đến một cấu trúc dữ liệu, có bản chất là dạng bảng. Nó đại diện cho các Hàng, mỗi hàng bao gồm một số quan sát. Hàng có thể có nhiều định dạng dữ liệu ( không đồng nhất ), trong khi một cột có thể có dữ liệu cùng kiểu dữ liệu ( Đồng nhất ). Khung dữ liệu thường chứa một số siêu dữ liệu ngoài dữ liệu, ví dụ, tên cột và hàng.

Dataframe-Pyspark-Dataframe-Tutorial



Chúng ta có thể nói rằng Dataframe không là gì cả, mà là Cấu trúc dữ liệu 2 chiều, tương tự như bảng SQL hoặc bảng tính. Bây giờ, hãy tiếp tục với Hướng dẫn về Khung dữ liệu PySpark này và hiểu chính xác lý do tại sao chúng ta cần Khung dữ liệu Pyspark?

Tại sao chúng ta cần Dataframe?

1. Xử lý dữ liệu có cấu trúc và bán cấu trúc



Khung dữ liệuđược thiết kế để xử lýđến lớn bộ sưu tập dữ liệu có cấu trúc cũng như bán cấu trúc . Các quan sát trong Spark DataFrame được tổ chức dưới các cột được đặt tên, giúp Apache Spark hiểu được lược đồ của DataFrame. Điều này giúp Spark tối ưu hóa kế hoạch thực thi trên các truy vấn này. Nó cũng có thể xử lý Petabyte Dữ liệu.

2.S licing và cắt hạt lựu

Khung dữ liệu API thường hỗ trợ các phương pháp phức tạp để cắt và cắt hạt dữ liệu. Nó bao gồmhoạt độngns chẳng hạn như “chọn” hàng, cột và ô theo tên hoặc theo số, lọc ra các hàng, v.v. Dữ liệu thống kê thường rất lộn xộn và chứa nhiều giá trị bị thiếu và sai cũng như vi phạm phạm vi. Vì vậy, một tính năng cực kỳ quan trọng của khung dữ liệu là quản lý rõ ràng dữ liệu bị thiếu.

3. Nguồn dữ liệu

DataFrame hỗ trợ nhiều định dạng và nguồn dữ liệu khác nhau, chúng ta sẽ xem xét vấn đề này sau trong blog Hướng dẫn về Pyspark Dataframe này. Họ có thể lấy dữ liệu từ nhiều nguồn khác nhau.

4.Hỗ trợ cho nhiều ngôn ngữ

Nó có hỗ trợ API cho các ngôn ngữ khác nhau như Python, R, Scala, Java,điều này giúp những người có nền tảng lập trình khác nhau sử dụng dễ dàng hơn.

Đăng ký kênh youtube của chúng tôi để cập nhật những thông tin mới ..!

Đặc điểm của Dataframe

  • Khung dữ liệu là Phân phối trong Tự nhiên, làm cho nó Khả năng chịu lỗi và Cấu trúc Dữ liệu Khả dụng Cao.
  • Đánh giá lười biếng là một chiến lược đánh giá giữ việc đánh giá một biểu thức cho đến khi giá trị của nó là cần thiết. Nó tránh đánh giá lặp lại. Đánh giá lười biếng trong Spark có nghĩa là quá trình thực thi sẽ không bắt đầu cho đến khi một hành động được kích hoạt. Trong Spark, bức tranh về sự lười biếng xuất hiện khi các phép biến đổi Spark xảy ra.
  • Khung dữ liệu là Bất biến trong thiên nhiên. Không thay đổi được, ý tôi là nó là một đối tượng có trạng thái không thể sửa đổi sau khi nó được tạo.Nhưng chúng ta có thể biến đổinó làgiá trị bằng cách áp dụngmột sốchuyển đổi, như trong RDD.

Nguồn khung dữ liệu PySpark

Khung dữ liệu trong Pyspark có thể được tạo theo nhiều cách:

Dữ liệu có thể được tải vào thông qua CSV, JSON, XML hoặc tệp Parquet. Nó cũng có thể được tạo bằng cách sử dụng RDD và thông qua bất kỳ cơ sở dữ liệu nào khác, như Hive hoặc là Cassandra cũng. Nó cũng có thể lấy dữ liệu từ HDFS hoặc hệ thống tệp cục bộ.

Tạo khung dữ liệu

Hãy tiếp tục với blog Hướng dẫn về Khung dữ liệu PySpark này và hiểu cách tạo Khung dữ liệu.

Chúng tôi sẽ tạo các phiên bản Nhân viên và Bộ phận.

từ pyspark.sql import * Employee = Row ('firstName', 'lastName', 'email', 'lương') worker1 = Employee ('Basher', 'armbrust', 'bash@edureka.co', 100000) worker2 = Employee ('Daniel', 'meng', 'daniel@stanford.edu', 120000) worker3 = Employee ('Muriel', None, 'muriel@waterloo.edu', 140000) worker4 = Employee ('Rachel', 'wendell ',' rach_3@edureka.co ', 160000) worker5 = Employee (' Zach ',' galifianakis ',' zach_g@edureka.co ', 160000) print (Employee [0]) print (worker3) Department1 = Row (id = '123456', name = 'HR') Department2 = Row (id = '789012', name = 'OPS') Department3 = Row (id = '345678', name = 'FN') Department4 = Row (id = ' 901234 ', name =' DEV ')

Tiếp theo, chúng tôi sẽ tạo một cá thể DepartmentWithE Employees từ Nhân viên và các Phòng ban

DepartmentWithEprisees1 = Row (Department = Department1, Employees = [worker1, Employ2, Employee5]) DepartmentWithErantyees2 = Row (Department = Department2, Employee = [worker3, worker4]) DepartmentWithErantyees3 = Row (Department = Department3, Employees = [worker1, Employ4, Employ3 ]) DepartmentWithEprisees4 = Row (Department = Department4, Nhân viên = [Nhân viên2, Nhân viên3])

Hãy tạo Khung dữ liệu của chúng ta từ danh sách Các hàng

DepartmentWithEprisees_Seq = [DepartmentWithErantyees1, DepartmentWithErantyees2] dframe = spark.createDataFrame (domainsWithErantyees_Seq) display (dframe) dframe.show ()

Khung dữ liệu Pyspark Ví dụ 1: Tập dữ liệu FIFA World Cup

Ở đây chúng tôi đã lấy Tập dữ liệu các cầu thủ FIFA World Cup. Chúng tôi sẽ tải dữ liệu này ở định dạng CSVthành mộtdataframe và sau đó chúng ta sẽ tìm hiểu về các chuyển đổi và hành động khác nhau có thể được thực hiện trên dataframe này.

Đọc dữ liệu từ tệp CSV

Hãy tải dữ liệu từ tệp CSV. Ở đây chúng ta sẽ sử dụng spark.read.csv để tải dữ liệu vào một khung dữ liệu fifa_df. Phương pháp thực tế là spark.read.format [csv / json] .

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

Lược đồ khung dữ liệu

Để có một cái nhìn vào lược đồ tức là. cấu trúc của khung dữ liệu, chúng tôi sẽ sử dụng printSchema phương pháp. Điều này sẽ cung cấp cho chúng tôi các cột khác nhau trong khung dữ liệu của chúng tôi cùng với kiểu dữ liệu và điều kiện có thể null cho cột cụ thể đó.

fifa_df.printSchema ()

Tên và Số lượng Cột (Hàng và Cột)

Khi chúng ta muốn xem tên và đếm số Hàng và Cột của một Khung dữ liệu cụ thể, chúng ta sử dụng các phương pháp sau.

fifa_df.columns // Tên cột fifa_df.count () // Số hàng len (fifa_df.columns) // Số cột

37784 số 8

Mô tả một cột cụ thể

Nếu chúng ta muốn xem tóm tắt của bất kỳ cột cụ thể nào của Khung dữ liệu, chúng ta sử dụng mô tả phương pháp. Phương pháp này cung cấp cho chúng ta tóm tắt thống kê của cột nhất định, nếu không được chỉ định, nó cung cấp tóm tắt thống kê của khung dữ liệu.

xin vui lòng sql cho người mới bắt đầu với các ví dụ
fifa_df.describe ('Tên huấn luyện viên'). show () fifa_df.describe ('Vị trí'). show ()

Chọn nhiều cột

Nếu chúng tôi muốn chọn các cột cụ thể từ khung dữ liệu, chúng tôi sử dụng lựa chọn phương pháp.

fifa_df.select ('Tên cầu thủ', 'Tên huấn luyện viên'). show ()

Chọn nhiều cột riêng biệt

fifa_df.select ('Tên cầu thủ', 'Tên huấn luyện viên'). diff (). show ()

Lọc dữ liệu

Để lọc dữ liệu, theo điều kiện được chỉ định, chúng tôi sử dụng bộ lọc chỉ huy. Ở đây, chúng tôi đang lọc khung dữ liệu của mình dựa trên điều kiện Match ID phải bằng 1096 và sau đó chúng tôi tính toán có bao nhiêu bản ghi / hàng trong đầu ra được lọc.

fifa_df.filter (fifa_df.MatchID == '1096'). show () fifa_df.filter (fifa_df.MatchID == '1096'). count () // để tính số

Lọc dữ liệu (Nhiều tham số)

Chúng tôi có thể lọc dữ liệu của mình dựa trên nhiều điều kiện (VÀ hoặc HOẶC)

fifa_df.filter ((fifa_df.Position == 'C') && (fifa_df.Event == 'G40' ')). show ()

Sắp xếp dữ liệu (OrderBy)

Để sắp xếp dữ liệu, chúng tôi sử dụng Đặt bởi phương pháp. Theo Mặc định, nó sắp xếp theo thứ tự tăng dần, nhưng chúng ta cũng có thể thay đổi nó thành thứ tự giảm dần.

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

Khung dữ liệu PySpark Ví dụ 2: Tập dữ liệu Superheros

Đang tải dữ liệu

Ở đây chúng ta sẽ tải dữ liệu theo cách tương tự như chúng ta đã làm trước đó.

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

Lọc dữ liệu

Superhero_df.filter (Superhero_df.Gender == 'Male'). Count () // Nam Heros Count Superhero_df.filter (Superhero_df.Gender == 'Female'). Count () // Số Heros nữ

Nhóm dữ liệu

GroupBy được sử dụng để nhóm khung dữ liệu dựa trên cột được chỉ định. Ở đây, chúng tôi đang nhóm khung dữ liệu dựa trên Race cột và sau đó với đếm , chúng ta có thể tìm thấy số lượng của chủng tộc cụ thể.

Race_df = Superhero_df.groupby ('Race') .count () .show ()

Thực hiện truy vấn SQL

Chúng tôi cũng có thể chuyển các truy vấn SQL trực tiếp đến bất kỳ khung dữ liệu nào, vì vậy chúng tôi cần tạo một bảng từ khung dữ liệu bằng cách sử dụng registerTempTable và sau đó sử dụng sqlContext.sql () để chuyển các truy vấn SQL.

Superhero_df.registerTempTable ('superhero_table') sqlContext.sql ('select * from superhero_table'). Show ()

sqlContext.sql ('select riêng biệt (Eye_color) from Superman_table'). show ()

sqlContext.sql ('chọn màu riêng biệt (Eye_color) từ siêu anh hùng'). count ()

2. 3

sqlContext.sql ('chọn tối đa (Trọng lượng) từ siêu anh hùng_table'). show ()

Và với điều này, chúng ta sẽ kết thúc Hướng dẫn về khung dữ liệu PySpark này.

Đây là nó, Guys!

Tôi hy vọng các bạn đã biết PySpark Dataframe là gì, tại sao nó được sử dụng trong ngành và các tính năng của nó trong Blog Hướng dẫn về PySpark Dataframe này. Xin chúc mừng, bạn không còn là Người mới làm quen với Dataframe nữa. Nếu bạn muốn tìm hiểu thêm về PySpark và Hiểu các Trường hợp Sử dụng Ngành khác nhau, hãy xem Spark với Python Hướng dẫn PySpark Blog.