我试图使用BufferedReader实时读取Hdfs中的文件,即如果读者到达文件末尾,我想等待下一个条目而不是退出while循环。
BufferedReader br = ...
String line = null;
while(true)
{
line = br.readLine();
if(line==null)
{
System.out.println("No log...Going to sleep");
Thread.sleep(2000);
continue;
}
System.out.println("We got a line: "+ line);
}
现在,当消耗掉所有行时,它会进入休眠状态而不是退出。但是,当我将行添加到文件时,它不会打印并继续进入睡眠状态。要读取的文件位于hdfs中,为了测试,我将附加如下文本:
echo "Hello World" | hadoop fs -appendToFile - /data/text.txt
附加似乎工作正常,因为当我做一只猫(或再次运行java代码)时,我可以看到添加的文本。
另外,我还试过if(line==null)
而不是检查if(!(br.ready())
。真的很感激任何帮助。