从 hdfs 读取文件引用风暴
read file reference storm from hdfs
你好,我想问一下。我已经开始了解 Apache Storm。是否可以风暴读取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 ..
当然可以!以下是如何从 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);
}
这不使用任何特定于 storm 的东西,只使用 Hadoop API (hadoop-common.jar)。
您收到的错误看起来像是因为您的文件路径不正确。
你好,我想问一下。我已经开始了解 Apache Storm。是否可以风暴读取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 ..
当然可以!以下是如何从 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);
}
这不使用任何特定于 storm 的东西,只使用 Hadoop API (hadoop-common.jar)。
您收到的错误看起来像是因为您的文件路径不正确。