2011-07-20 31 views
6

Tôi đang cố gắng chạy một công việc trên Elastic MapReduce (EMR) với một lọ tùy chỉnh. Tôi đang cố gắng xử lý khoảng 1000 tệp trong một thư mục. Khi tôi gửi công việc của mình với thông số s3n://bucketname/compressed/*.xml.gz, tôi nhận được lỗi "tệp trùng khớp 0". Nếu tôi chỉ chuyển đường dẫn tuyệt đối tới tệp (ví dụ: s3n://bucketname/compressed/00001.xml.gz), nó chạy tốt, nhưng chỉ một tệp được xử lý. Tôi đã thử sử dụng tên của thư mục (s3n://bucketname/compressed/), hy vọng rằng các tệp bên trong sẽ được xử lý, nhưng điều đó chỉ chuyển thư mục đến công việc.Nhiều tệp như đầu vào trên Amazon Elastic MapReduce

Đồng thời, tôi có bản cài đặt Hadoop cục bộ nhỏ hơn. Trong đó, khi tôi vượt qua công việc của tôi với các ký tự đại diện (/path/to/dir/on/hdfs/*.xml.gz), nó hoạt động tốt và tất cả 1000 tệp được liệt kê chính xác.

Làm cách nào để có EMR liệt kê tất cả các tệp của tôi?

+0

Cách khác, làm cách nào để liệt kê các tệp trong thư mục trong s3 từ mã? Sau đó tôi có thể tạo đường dẫn từ các tệp đó. –

+1

Nó hoạt động ngay bây giờ! Đã có một tệp rỗng có tên là "được nén" trong cùng một nhóm. Ngay khi tôi xóa tệp trống, chương trình đã bắt đầu hoạt động. –

Trả lời

2

Tôi không biết làm thế nào EMR liệt kê tất cả các tập tin, nhưng đây là một đoạn mã mà làm việc cho tôi:

 FileSystem fs = FileSystem.get(URI.create(args[0]), job.getConfiguration()); 
     FileStatus[] files = fs.listStatus(new Path(args[0])); 
     for(FileStatus sfs:files){ 
      FileInputFormat.addInputPath(job, sfs.getPath()); 
     } 

Nó sẽ liệt kê tất cả các file mà nằm trong thư mục đầu vào, và bạn có thể làm bất cứ điều gì mà bạn sẽ

+1

Cảm ơn bạn đã trả lời. Sự cố đã được khắc phục sau. Có một tệp rỗng được gọi là nén trong cùng một nhóm. Ngay khi tôi xóa tệp trống, chương trình đã bắt đầu hoạt động. –

+0

+1: điều này giúp tôi rất nhiều. cảm ơn! – jldupont

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