2012-03-15 37 views
6

Tôi khá bối rối về việc sử dụng Avro với bản đồ giảm và không thể tìm thấy hướng dẫn tốt để làm theo.Một công việc Mapreduce với đầu vào văn bản đơn giản và đầu ra avro

Dường như các lớp như AvroJob và AvroMapper được thiết kế cho các sự cố khi cả đầu vào và đầu ra là các tệp dữ liệu Avro. Điều gì về khi đầu vào của bạn chỉ là văn bản thuần túy?

Cụ thể:

Trình ánh xạ của tôi mất các khóa có thể ghi và giá trị văn bản làm đầu vào. Nó phát ra các phím Text và các giá trị MyAvroRecord.

Trình giảm tốc của tôi có phím Văn bản và Bộ lặp của MyAvroRecords làm đầu vào và phát ra các phím Văn bản và các giá trị MyAvroRecord.

Làm cách nào để có được một OutputFormat có thể viết các khóa văn bản này và các giá trị MyAvroRecord để gửi?

Chúc mừng, Dave

Trả lời

6

Ok, vì vậy tôi figured this out.

Thay vì một người lập bản đồ xuất kết quả phím văn bản và giá trị MyAvroRecord, tôi cần một giá trị đã tạo khóa AvroKey và giá trị AvroValue. Điều đó đã có thể cho kết quả của nó thẳng vào một AvroReducer, và tôi chỉ có thể sử dụng AvroJob.setOutputSchema() để xử lý đầu ra (tôi không phải thực hiện một OutputFormat ở tất cả).

+0

Xin chào Dave, tôi đang cố gắng làm sth ở phía đối diện. Đầu vào của tôi là văn bản và đầu ra là Bản ghi Chung. Tôi cố gắng thiết lập một lược đồ đầu vào Avro cho AvroJob và sau đó thiết lập lược đồ đầu ra là lược đồ của Bản ghi Chung. Nhưng tôi không biết làm thế nào để bọc lên lược đồ đầu vào để AvroJob có thể hiểu nó là văn bản thuần túy. Tôi có nên chỉ sử dụng setInputSchema() là không có gì? –

0

Một cách tiếp cận khác có thể là: đầu ra của trình ánh xạ không cần phải là AvroKey và AvroValue. Nó có thể là loại đầu ra chung của bạn, mà trở thành đầu vào để giảm tốc của bạn. Trong giảm tốc, chúng ta có thể thực hiện chuyển đổi Avro. Bằng cách đặt loại Outputformat thành Avro.

liên quan, sujoy

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