Lệnh getmerge
đã được tạo riêng cho việc hợp nhất tệp từ HDFS vào một tệp trên hệ thống tệp cục bộ.
Lệnh này rất hữu ích để tải xuống đầu ra của công việc MapReduce, có thể tạo nhiều tập tin part- * và kết hợp chúng thành một tệp cục bộ, mà bạn có thể sử dụng cho các hoạt động khác (ví dụ: Bảng tính Excel để trình bày).
Câu trả lời cho câu hỏi của bạn:
Nếu hệ thống tập tin đích không có đủ không gian, sau đó IOException được ném. getmerge
sử dụng nội bộ IOUtils.copyBytes()
(xem IOUtils.copyBytes()) chức năng sao chép một tệp tại một thời điểm từ HDFS vào tệp cục bộ. Chức năng này ném IOException
bất cứ khi nào có lỗi trong thao tác sao chép.
Lệnh này nằm trên các dòng tương tự như hdfs fs -get
lệnh nhận tệp từ HDFS vào hệ thống tệp cục bộ. Chỉ có sự khác biệt là hdfs fs -getmerge
hợp nhất nhiều tệp từ HDFS thành hệ thống tệp cục bộ.
Nếu bạn muốn kết hợp nhiều file trong HDFS, bạn có thể đạt được nó bằng cách sử copyMerge()
phương pháp từ FileUtil
lớp (xem FileUtil.copyMerge()).
API này sao chép tất cả các tệp trong một thư mục vào một tệp (kết hợp tất cả các tệp nguồn).
Nguồn
2016-04-16 07:32:36
Tôi biết rằng đây không phải là câu hỏi của bạn, nhưng có lẽ bạn sẽ thấy bài đăng này hữu ích: http: //stackoverflow.com/questions/21776339/hadoop-getmerge-to-another-machine – vefthym