Tôi có hai lớp java riêng biệt để thực hiện hai công việc Mapreduce khác nhau. Tôi có thể chạy chúng một cách độc lập. Các tệp đầu vào mà chúng đang hoạt động giống nhau cho cả hai công việc. Vì vậy, câu hỏi của tôi là liệu chúng ta có thể xác định hai người vẽ bản đồ và hai gia giảm trong một lớp java nhưHadoop MapReduce: Có thể xác định hai trình lập bản đồ và bộ giảm tốc trong một lớp công việc hadoop?
mapper1.class
mapper2.class
reducer1.class
reducer2.class
và sau đó như
job.setMapperClass(mapper1.class);
job.setmapperClass(mapper2.class);
job.setCombinerClass(reducer1);
job.setCombinerClass(reducer2);
job.setReducerClass(reducer1);
job.setReducerClass(reducer2);
Do các phương pháp thiết lập thực sự ghi đè lên những người trước đây hoặc thêm mới cái gì? Tôi đã thử mã, nhưng nó thực hiện các lớp học mới nhất chỉ mang lại cho tôi nghĩ rằng nó ghi đè. Nhưng phải có một cách để làm điều này đúng không?
Lý do tại sao tôi hỏi đây là tôi chỉ có thể đọc các tệp đầu vào một lần (một I/O) và sau đó xử lý hai bản đồ giảm công việc. Tôi cũng muốn biết làm thế nào tôi có thể viết các tập tin đầu ra thành hai thư mục khác nhau. Hiện tại, cả hai công việc đều tách biệt và yêu cầu đầu vào và thư mục đầu ra.
+1 Điều này có ý nghĩa. – pyfunc
@Chris Cả hai cặp MR chia sẻ cùng một đầu vào, điều này khiến tôi nghĩ đến việc chỉ đọc được dữ liệu đầu vào một lần. Người lập bản đồ làm việc với các khóa khác nhau. Điều này có nghĩa là các khóa cho một người lập bản đồ sẽ khác với các khóa cho người lập bản đồ khác. Lý do tại sao tôi nghĩ là tôi có thể đọc các tập tin đầu vào chỉ một lần để xử lý chúng trong hai cặp MR khác nhau hoạt động độc lập. – Bob