Tôi đang cố sử dụng các khung dữ liệu Spark thay vì RDD vì chúng dường như cao cấp hơn RDD và có xu hướng tạo mã dễ đọc hơn, nhưng tôi sẽ rất vui khi nhận được đề xuất cho một cái gì đó thành ngữ hơn cho nhiệm vụ trong tầm tay.Tìm hàng tối đa cho mỗi nhóm trong Spark DataFrame
Trong cụm Google Dataproc 14 nút, tôi có khoảng 6 triệu tên được dịch sang id theo hai hệ thống khác nhau: sa
và sb
. Mỗi chứa name
, id_sa
và id_sb
. Mục tiêu của tôi là tạo bản đồ từ id_sa
đến id_sb
sao cho mỗi id_sa
, id_sb
tương ứng là id thường xuyên nhất trong số tất cả các tên được đính kèm với id_sa
.
Hãy cố gắng làm rõ bằng ví dụ. Nếu tôi có các hàng sau:
[Row(name='n1', id_sa='a1', id_sb='b1'),
Row(name='n2', id_sa='a1', id_sb='b2'),
Row(name='n3', id_sa='a1', id_sb='b2'),
Row(name='n4', id_sa='a2', id_sb='b2')]
Mục tiêu của tôi là để tạo ra một ánh xạ từ a1
để b2
. Thật vậy, những cái tên liên quan đến a1
là n1
, n2
và n3
, mà bản đồ tương ứng để b1
, b2
và b2
, vì vậy b2
được ánh xạ thường gặp nhất trong các tên liên quan đến a1
. Trong cùng một cách, a2
sẽ được ánh xạ tới b2
. Có thể giả định rằng sẽ luôn có người chiến thắng: không cần phải phá vỡ quan hệ.
Tôi đã hy vọng rằng tôi có thể sử dụng groupBy(df.id_sa)
trên khung dữ liệu của mình, nhưng tôi không biết phải làm gì tiếp theo. Tôi đã hy vọng cho một sự kết hợp có thể tạo ra, cuối cùng, các hàng sau:
[Row(id_sa=a1, max_id_sb=b2),
Row(id_sa=a2, max_id_sb=b2)]
Nhưng có lẽ tôi đang cố gắng để sử dụng công cụ sai và tôi chỉ cần quay trở lại sử dụng RDDs.
Câu hỏi của bạn là gì? – eliasah
@eliasah bất kỳ con trỏ (liên kết, mẫu mã) về cách để làm điều này với dataframes? –
Bạn muốn thực hiện một nhóm theo một tập hợp tối đa? – eliasah