2013-04-23 36 views
5

có thể xử lý các giá trị với cùng một khóa trên các bộ giảm tốc khác nhau không? từ tất cả những người lập bản đồ tôi có dữ liệu với cùng một khóa và tôi muốn xử lý nó với các bộ giảm tốc khác nhau? sự nhầm lẫn của tôi là cuốn sách nói rằng tất cả các giá trị với cùng một khóa sẽ đi đến cùng giảm ...Các phím tắt khác nhau chính (HADOOP)?

mapper1(k1,v1),mapper2(k1,v2),mapper3(k1,v3) and so on... 

tôi không muốn tất cả các dữ liệu để cùng giảm ... nó nên được như thế,

reducer1(k1,v1),reducer2(k1,v2).... 

và cho phép nói reducer1 sản xuất sum1 và reducer2 sản sum2 và tôi muốn rằng

sum=sum2+sum1 

làm thế nào tôi nên làm điều đó?

+0

Có một lí do không thể lý do tại sao làm như bạn ở trên sử dụng một bộ kết hợp .. và sau đó tổng hợp các kết quả của tổ hợp trong giảm? – Suchet

+0

trong đó giả sử tôi có dữ liệu rất lớn (cho phép nói rằng tôi có số lượng lớn các hàng trong ma trận và cuối cùng tôi muốn tổng của tất cả các phần tử), tôi có thể dễ dàng tổng hợp điều này cho một phần trong bộ kết hợp ngay bây giờ nếu muốn tổng một toàn bộ tôi cần phải đặt đầu ra của tất cả các combiners trong một giảm (i dnt 9 othr cách) dẫn đến một quá trình rất chậm ... – Divyendra

+0

Bạn không được hưởng lợi từ bản chất phân tán của Hadoop. Phân vùng dữ liệu của bạn sao cho nhiều người lập bản đồ hoạt động cùng lúc trên các tệp nhập của bạn. Các vấn đề như thế này là tầm thường. – Suchet

Trả lời

4

Dữ liệu có cùng khóa sẽ luôn đi đến cùng trình giảm tốc. Nhưng bạn có thể chọn bất kỳ phím nào bạn muốn, vì vậy nếu bạn muốn họ đi đến các bộ giảm tốc khác nhau, thì chỉ cần chọn các phím khác nhau.

Nếu bạn muốn kết hợp thêm dựa trên đầu ra từ bộ giảm tốc, bạn phải thực hiện một công việc MapReduce khác, với đầu ra từ công việc đầu tiên làm đầu vào cho công việc tiếp theo. Điều này có thể xấu xí nhanh chóng, vì vậy, bạn có thể muốn xem Cascading, Pig hoặc Hive để đơn giản hóa mọi thứ.

+0

vấn đề không phải với người lập bản đồ ... họ sẽ có nhiều nhưng nếu tôi muốn tổng số tiền thì tôi sẽ bị buộc phải sử dụng một bộ giảm tốc và trong trường hợp đó một bộ giảm cho tất cả các đầu ra bản đồ sẽ làm cho máy tính chậm ... plz sửa tôi nếu im sai? - – Divyendra

+0

Không, bạn đã đúng. Chỉ sử dụng một bộ giảm tốc là chậm. Nhưng nếu bạn muốn câu trả lời cuối cùng của bạn là một sự kết hợp của đầu ra từ các bộ giảm tốc khác nhau, bạn sẽ phải thực hiện một công việc MR khác. Và nếu bạn muốn một giá trị duy nhất là kết quả, bạn sẽ phải chỉ có một bộ giảm tốc tại một số điểm. Chỉ cần cố gắng làm cho dữ liệu được gửi đến bộ giảm tốc càng nhỏ càng tốt. –

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