java - HDFS 文件观察服务
问题描述
我正在使用 hdfs 文件观察服务来加载配置文件,因为它在我的 flink 流式传输作业中发生更改。
观察者服务来源:HDFS 文件观察者
我在这里面临的问题是观察者服务正在对整个 hdfs 的变化做出反应,而不仅仅是我传递的目录。
我的代码:
public static void main( String[] args ) throws IOException, InterruptedException, MissingEventsException
{
HdfsAdmin admin = new HdfsAdmin( URI.create("hdfs://stage.my-org.in:8020/tmp/anurag/"), new Configuration() );
DFSInotifyEventInputStream eventStream = admin.getInotifyEventStream();
while( true ) {
EventBatch events = eventStream.take();
for( Event event : events.getEvents() ) {
switch( event.getEventType() ) {
case CREATE:
System.out.print( "event type = " + event.getEventType() );
CreateEvent createEvent = (CreateEvent) event;
System.out.print( " path = " + createEvent.getPath() + "\n");
break;
default:
break;
}
}
}
}
程序输出:
event type = CREATE path = /tmp/anurag/newFile.txt
event type = CREATE path = /tmp/newFile2.txt
请帮我解决这个问题,以便我可以查看作为 URI 传递的特定目录中的文件
感谢期待
注意:如果你尝试运行这个程序,请以 hdfs 用户身份运行,否则你会得到 org.apache.hadoop.security.AccessControlException
解决方案
现在,我使用 Hadoop API 每 30 秒获取一次文件,读取它的修改时间,以及它是否大于再次重新加载文件。
推荐阅读
- javascript - 如何在子窗口中检测 location.hostname?
- css - Bootstrap 两侧的不同填充
- python - 如何将 Blender bge 模块作为 bge.py?
- ios - 核心数据启动错误 Domain=NSCocoaErrorDomain Code=134140 "(null)"
- java - 在 Java 中为 Actor System 设置默认的 ExecutionContext
- i2c - SPI和I2C读/写访问的区别
- javascript - 添加两个值时的JavaScript NaN
- laravel - 在 laravel 中发出 POST 请求
- alexa - 使用 node.js 的 Alexa 技能中的用户输入不调用意图
- react-native - React Native - 网络请求失败