从hdfs读取文件引用风暴

时间:2015-04-08 16:41:00

标签: hadoop hdfs bigdata apache-storm

嗨,我想问一些问题。我开始了解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 ..

1 个答案:

答案 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)。

您收到的错误看起来是因为您的文件路径不正确。