Tôi đang cố gắng tìm thuật toán tìm kiếm các bộ phân tách (các thành phần được kết nối/liên kết tìm) trên lượng lớn dữ liệu với tia lửa apache. Vấn đề là lượng dữ liệu. Ngay cả biểu diễn thô của đỉnh biểu đồ không phù hợp với ram trên một máy đơn lẻ. Cạnh cũng không phù hợp với ram.Bộ phân chia trên tia lửa apache
Dữ liệu nguồn là tệp văn bản của các cạnh đồ thị trên hdfs: "id1 \ t id2".
id hiện tại dưới dạng giá trị chuỗi, không phải int.
giải pháp Naive mà tôi tìm thấy là:
- mất RDD cạnh ->
[id1:id2] [id3:id4] [id1:id3]
- nhóm cạnh bằng chìa khóa. ->
[id1:[id2;id3]][id3:[id4]]
- cho mỗi bản ghi thiết lập id tối thiểu cho từng nhóm ->
(flatMap) [id1:id1][id2:id1][id3:id1][id3:id3][id4:id3]
- ngược RDD từ giai đoạn 3
[id2:id1] -> [id1:id2]
leftOuterJoin
của rdds từ giai đoạn 3 và 4- lặp lại từ giai đoạn 2 trong khi kích thước của RDD trên bước 3 sẽ không thay đổi
Nhưng kết quả này trong việc chuyển một lượng lớn dữ liệu giữa các nút (xáo trộn)
Bất kỳ lời khuyên nào?
Tôi sẽ nghĩ graphx rằng sẽ có những gì bạn cần xây dựng trong (link: http://spark.apache.org/ graphx /) –