2011-09-29 27 views
5

Tôi đọc Hadoop in Action và thấy rằng trong Java sử dụng MultipleOutputFormatMultipleOutputs các lớp chúng tôi có thể giảm dữ liệu thành nhiều tệp đạt được điều tương tự bằng cách sử dụng Python streaming.Python Streaming: làm thế nào để giảm đến nhiều đầu ra? (Có thể với Java mặc dù)

ví dụ:

   /out1/part-0000 
mapper -> reducer 
        \ out2/part-0000 

Nếu có ai biết, nghe, thực hiện điều tương tự, xin vui lòng cho tôi biết

Trả lời

2

Các Dumbo Feathers, một tập các lớp java để sử dụng cùng với Dumbo (thư viện python mà làm cho nó dễ dàng để viết các chương trình M/R python hiệu quả cho hadoop), thực hiện điều này trong số output classes của nó. Về cơ bản, trong công việc M/R python dumbo của bạn, bạn đưa ra một khóa là một bộ gồm hai phần tử - phần tử đầu tiên là tên của thư mục để xuất ra, phần tử thứ hai là khóa thực tế. Lớp đầu ra mà bạn đã chọn sau đó kiểm tra bộ tuple để tìm thư mục đầu ra nào để sử dụng và sử dụng MultipleOutputFormat để ghi vào các thư mục con khác nhau.

Với dumbo, điều này là dễ dàng do việc sử dụng typedbytes như định dạng đầu ra, nhưng tôi nghĩ rằng nó sẽ có thể làm được ngay cả khi bạn có định dạng đầu ra khác.

+0

Tôi làm cách nào để sử dụng? chỉ cần tải về các jar, cung cấp cho "-libjar feathers.jar" mà không ảnh hưởng đến bất kỳ bản đồ/giảm công việc tôi đã viết cho đến bây giờ? bất kỳ mã thử nghiệm mẫu nào mà tôi có thể tham khảo để chạy bằng cách này sẽ hữu ích – daydreamer

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