嗨,我想问一些问题。我开始了解apache风暴。是否有可能在hdfs中读取数据文件。??
示例:我在hdfs上的目录/user/hadoop
中有一个数据txt文件。风暴是否有可能读取该文件。先于
因为当我尝试运行风暴时,如果文件不存在,我会收到错误消息。当我尝试通过本地存储中的读取文件运行它时,它是成功的
>>> Starting to create Topology ...
---> Read Class: FileReaderSpout , 1387957892009
---> Read Class: Split , 1387958291266
---> Read Class: Identity , 247_Identity_1387957902310_1
---> Read Class: SubString , 1387964607853
---> Read Class: Trim , 1387962789262
---> Read Class: SwitchCase , 1387962333010
---> Read Class: Reference , 1387969791518
File /reff/test.txt .. not exists ..
答案 0 :(得分:0)
当然!以下是如何从HDFS读取文件的示例:
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
// ...stuff...
FileSystem fs = FileSystem.get(URI.create("hdfs://prodserver"), new Configuration());
String hdfspath = "/apps/storm/conf/config.json";
Path path = new Path();
if (fs.exists(path)) {
InputStreamReader reader = new InputStreamReader(fs.open(path));
// do stuff with the reader
} else {
LOG.info("Does not exist {}", hdfspath);
}
这不使用任何特定于风暴的东西,只使用Hadoop API(hadoop-common.jar)。
您收到的错误看起来是因为您的文件路径不正确。