Apache Spark kết hợpByKey Giải thích



Blog Spark Hadoop này cho bạn biết tất cả những gì bạn cần biết về Apache Spark kết hợpByKey. Tìm điểm trung bình của mỗi học sinh bằng cách sử dụng phương pháp connectByKey.

Đóng góp bởi Prithviraj Bose

Spark là một khuôn khổ điện toán cụm nhanh như chớp được thiết kế để tính toán nhanh chóng và nhu cầu cho các chuyên gia với là đáng kể trên thị trường ngày nay.Đây là một API mạnh mẽ trong Spark, kết hợp .





Thang điểm API: org.apache.spark.PairRDDFunctions.combineByKey .

php insert vào $ table

API Python: pyspark.RDD.combineByKey .



API có ba chức năng (như biểu thức lambda trong Python hoặc là chức năng ẩn danh trong Thang ), cụ thể là,

  1. Tạo hàm kết hợp: x
  2. Hợp nhất giá trị hàm: y
  3. Hợp nhất hàm kết hợp: z

và định dạng API là kết hợpByKey (x, y, z) .

Hãy xem một ví dụ (trong Scala). Bạn có thể tìm thấy nguồn Scala đầy đủ đây .



Mục tiêu của chúng tôi là tìm điểm trung bình của mỗi học sinh.

Đây là một lớp giữ chỗ ScoreDetail lưu trữ tên học sinh cùng với điểm của một môn học.

Scoredetail-spark-combinebykey

Một số dữ liệu thử nghiệm được tạo và chuyển đổi thành các giá trị cặp khóa trong đó key = Tên học sinhvalue = ScoreDetail ví dụ.

Sau đó, chúng tôi tạo một cặp RDD như được hiển thị trong đoạn mã bên dưới. Chỉ để thử nghiệm, tôi đã tạo một phân vùng băm có kích thước 3, vì vậy ba phân vùng sẽ chứa 2, 2 và 4 cặp giá trị khóa tương ứng. Điều này được đánh dấu trong phần mà chúng ta khám phá từng phân vùng.

Bây giờ chúng ta có thể khám phá từng phân vùng. Dòng đầu tiên in độ dài của mỗi phân vùng (số cặp giá trị khóa trên mỗi phân vùng) và dòng thứ hai in nội dung của mỗi phân vùng.

java cách kết thúc chương trình

Và đây là phong trào cuối cùng trong đó chúng tôi tính điểm trung bình cho mỗi học sinh sau khi kết hợp điểm trên các phân vùng.

Dòng mã trên như sau…
Đầu tiên, chúng ta cần tạo một hàm kết hợp về cơ bản là một tuple = (giá trị, 1) cho mọi khóa gặp trong mỗi phân vùng. Sau giai đoạn này, đầu ra cho mọi (khóa, giá trị) trong một phân vùng là (khóa, (giá trị, 1)).

Sau đó, trong lần lặp tiếp theo, các hàm kết hợp trên mỗi phân vùng được hợp nhất bằng cách sử dụng hàm giá trị hợp nhất cho mọi khóa. Sau giai đoạn này, đầu ra của mọi (khóa, (giá trị, 1)) là (khóa, (tổng, đếm)) trong mọi phân vùng.

Cuối cùng, hàm kết hợp hợp nhất hợp nhất tất cả các giá trị trên các phân vùng trong trình thực thi và gửi dữ liệu trở lại trình điều khiển. Sau giai đoạn này, đầu ra của mọi (khóa, (tổng số, số lượng)) trên mỗi phân vùng là
(key, (totalAcrossAllPartitions, countAcrossAllPartitions)).

Bản đồ chuyển đổi
(key, tuple) = (key, (totalAcrossAllPartitions, countAcrossAllPartitions))
để tính giá trị trung bình cho mỗi khóa dưới dạng (key, tuple._1 / tuple._2).

cách tạo mảng động trong java

Dòng cuối cùng in điểm trung bình của tất cả học sinh ở cuối tài xế.

Có một câu hỏi cho chúng tôi? Đề cập đến họ trong phần bình luận và chúng tôi sẽ liên hệ lại với bạn.

Bài viết liên quan:

Phân vùng làm sáng tỏ trong Spark