tôi có thể ở trong HDFS Cài đặt trên trình xem tập tin 吗?
场景:Các tập tin liên tục được đăng nhập vào HDFS. Tôi muốn bắt đầu công việc Spark khi số lượng tệp đạt đến ngưỡng (có thể là số lượng tệp hoặc kích thước tệp).
Có thể triển khai trình xem tệp trên HDFS để đạt được điều này không. Nếu có thì có ai có thể đề xuất cách thực hiện việc này không? Các lựa chọn khác nhau là gì? Zookeeper hay Oozie có làm được không?
Bất kỳ trợ giúp sẽ được đánh giá rất cao. Cảm ơn.
Giới thiệu Hadoop 2.6 DFSNotifyEventInputStream
, bạn có thể sử dụng nó cho việc này. Bạn có thể bắt đầu từ hdfsquản trị viên
Lấy một phiên bản của nó và sau đó chỉ cần gọi .lấy()
hoặc .thăm dò ý kiến()
Bạn có thể nhận được tất cả các sự kiện. Các loại sự kiện bao gồm xóa, nối thêm và tạo, sẽ đáp ứng những gì bạn đang tìm kiếm.
Đây là một ví dụ cơ bản. Đảm bảo hdfs
Chạy nó với tư cách người dùng vì giao diện quản lý yêu cầu root HDFS.
public static void main( String[] args ) ném IOException, InterruptedException, MissingEventsException
{
Quản trị viên HdfsAdmin = HdfsAdmin mới( URI.create( args[0] ), Cấu hình mới() );
DFSNotifyEventInputStream eventStream = admin.getInotifyEventStream();
trong khi( đúng ) {
Sự kiện EventBatch = eventStream.take();
for( Sự kiện sự kiện : events.getEvents() ) {
System.out.println( "event type = " + event.getEventType() );
switch(event.getEventType() ) {
trường hợp TẠO:
CreateEvent createEvent = (CreatEvent) sự kiện;
System.out.println( " path = " + createEvent.getPath() );
phá vỡ;
default:
phá vỡ;
}
}
}
}
Đây là một bài viết blog bao gồm nó chi tiết hơn:
http://johnjianfang.blogspot.com/2015/03/hdfs-6634-inotify-in-hdfs.html?m=1
Tôi là một lập trình viên xuất sắc, rất giỏi!