2010-07-19 35 views
5

Trong Hadoop, bạn có thể sử dụng cơ chế sắp xếp thứ cấp để sắp xếp các giá trị trước khi chúng được gửi đến bộ giảm tốc.Lớp khóa nào phù hợp để sắp xếp thứ cấp?

Cách này được thực hiện trong Hadoop là bạn thêm giá trị để sắp xếp theo khóa và sau đó có một số phương thức so sánh nhóm và khóa tùy chỉnh móc vào hệ thống sắp xếp.

Vì vậy, bạn sẽ cần có khóa bao gồm chủ yếu cả khóa thực và giá trị cần sắp xếp theo. Để thực hiện điều này đủ nhanh, tôi sẽ cần một cách tạo khóa tổng hợp cũng dễ dàng phân hủy thành các phần riêng biệt cần thiết cho nhóm và các phương pháp so sánh chính.

Cách thông minh nhất là làm điều này. Có một lớp Hadoop "ngoài hộp" có thể hỗ trợ tôi trong việc này hay tôi phải tạo một lớp khóa riêng cho từng bước giảm bản đồ?

Làm cách nào để thực hiện điều này nếu khóa thực sự là một tổng hợp bao gồm nhiều phần (cũng cần thiết riêng biệt vì trình phân vùng)?

Các bạn đề xuất điều gì?

P.S. Tôi muốn thêm thẻ "phân loại phụ" nhưng tôi không có đủ đại diện để làm như vậy.

+1

ở đó bạn đi (tôi đã thêm thẻ) :-) –

+0

Cảm ơn bạn đã thêm thẻ :) –

+0

Bạn chưa nhận được câu hỏi của mình, bạn có muốn thêm một ví dụ ngắn không? – Sudarshan

Trả lời

0

Bạn cần thay đổi các phím cách phân hoạch lại và được nhóm, và thisbasicakly có nghĩa là bạn đặt nhiều hơn 1 kiểu dữ liệu trong phím, toàn bộ trọng các phương pháp so sánh để phân vùng và nhóm ....

-Bạn có thể tuần tự hóa/deserialize các phím của bạn, và đối phó với dữ liệu đầu vào như các đối tượng hoặc đậu nếu bạn muốn gõ mạnh mẽ, mã mạnh mẽ để phân loại thứ ...

-for kịch bản đơn giản, chỉ cần đặt một dấu "#" giá trị!

Có một bài viết trình độ cao lớn về vấn đề này ở đây:

http://pkghosh.wordpress.com/2011/04/13/map-reduce-secondary-sort-does-it-all/

1

tôi đã chạy vào tình huống này tất cả các thời gian và nhận được mệt mỏi của văn bản lớp chìa khóa tùy chỉnh composite. Tôi đã viết một lớp Tuple chung là một danh sách các đối tượng và có thể hoạt động như một khóa tổng hợp. Danh sách có thể chứa số lượng tùy ý các đối tượng của các kiểu trình bao bọc nguyên thủy Java. Nó thực hiện WritableComparable. Các nguồn có thể được xem tại đây

https://github.com/pranab/chombo/blob/master/src/main/java/org/chombo/util/Tuple.java

0

tôi đã có một tình huống trong đó tôi đã phải sắp xếp dữ liệu trên hai cột, một là kiểu chuỗi và một số nguyên là loại. Tôi đã viết WritableComparable tùy chỉnh của mình, và trong phương thức compareTo tôi đã viết logic của mình. Nó thực sự là một cách tốt nhất từ ​​quan điểm của tôi, vì chúng ta có thể tùy chỉnh logic phân loại của chúng ta.

Các vấn đề liên quan