2011-09-16 60 views
7

Tôi có thể tìm thấy tên nếu tệp đầu vào trong một lớp bản đồ bằng cách sử dụng FileSplit khi viết chương trình bằng Java.Nhận tên tệp đầu vào trong chương trình hadoop tuyến

Có cách nào tương ứng để thực hiện điều này khi tôi viết một chương trình bằng Python (sử dụng trực tuyến?)

Tôi tìm thấy sau đây trong tài liệu trực tuyến hadoop trên apache:

Xem cấu hình tham số. Trong quá trình thực hiện lệnh truyền trực tuyến, tên của tham số "được sắp xếp bản đồ" được chuyển đổi. Các dấu chấm (.) trở thành dấu gạch dưới (_). Ví dụ: mapred.job.id trở thành mapred_job_id và mapred.jar trở thành mapred_jar. Trong mã của bạn, hãy sử dụng tên thông số có dấu gạch dưới.

Nhưng tôi vẫn không thể hiểu cách sử dụng điều này bên trong công cụ lập bản đồ của mình.

Mọi trợ giúp đều được đánh giá cao.

Cảm ơn

Trả lời

7

Theo "Hadoop : The Definitive Guide"

Hadoop bộ thông số cấu hình công việc như biến môi trường cho các chương trình Streaming. Tuy nhiên, nó thay thế ký tự không phải chữ và số bằng dấu gạch dưới để đảm bảo chúng là các tên hợp lệ. Khái niệm Python sau minh họa cách bạn có thể lấy giá trị của tài sản mapred.job.id từ bên trong một kịch bản Python Streaming:

os.environ [ "mapred_job_id"]

Bạn cũng có thể thiết lập các biến môi trường cho Quá trình phát trực tiếp do MapReduce khởi chạy bằng cách áp dụng tùy chọn -cmdenv cho chương trình Trình khởi chạy trực tuyến (một lần cho mỗi biến bạn muốn đặt). Ví dụ, sau thiết đặt biến môi trường MAGIC_PARAMETER:

-cmdenv MAGIC_PARAMETER = abracadabra

+2

Có vẻ như thuộc tính Krishnamutry cần được gọi là "map.input.file" - có khả năng sẽ xuất hiện dưới dạng biến môi trường "map_input_file" cho công việc phát trực tuyến. –

+0

Lưu ý: các khoảng thời gian phải được thay thế bằng dấu gạch dưới –

+0

Cảm ơn - đã cập nhật nó. –

0

Các ENV_VARIABLE mới cho Hadoop 2.x là MAPREDUCE_MAP_INPUT_FILE

+0

Bạn nên sử dụng chữ thường 'mapreduce_map_input_file' – ofekp

4

Bằng cách phân tích các mapreduce_map_input_file (mới) hoặc map_input_file (không được chấp nhận) biến môi trường, bạn sẽ nhận được tên tệp bản đồ đầu vào.

Chú ý:
Hai biến môi trường là case-sensitive, tất cả các chữ là thấp hơn trường hợp.

+1

'map_input_file' hoạt động cho hadoop 0.20.x cho bất kỳ ai bị kẹt trên cụm cũ – Blake

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