“StormHDFS连接器”的源代码,可用于将数据写入hdfs。github url是:https://github.com/ptgoetz/storm-hdfs 有一种特殊的拓扑:“hdfsfiletopology”用于将“|”分隔的数据写入hdfs。链接:https://github.com/ptgoetz/storm-hdfs/blob/master/src/test/java/org/apache/storm/hdfs/bolt/hdfsfiletopology.java
我对代码部分有疑问:
Yaml yaml = new Yaml();
InputStream in = new FileInputStream(args[1]);
Map<String, Object> yamlConf = (Map<String, Object>) yaml.load(in);
in.close();
config.put("hdfs.config", yamlConf);
HdfsBolt bolt = new HdfsBolt()
.withConfigKey("hdfs.config")
.withFsUrl(args[0])
.withFileNameFormat(fileNameFormat)
.withRecordFormat(format)
.withRotationPolicy(rotationPolicy)
.withSyncPolicy(syncPolicy)
.addRotationAction(new MoveFileAction().toDestination("/dest2/"));
这部分代码做什么,尤其是yaml部分?
1条答案
按热度按时间ia2d9nvy1#
我觉得代码很清楚。为了
HdfsBolt
为了能够写入hdfs,它需要关于hdfs本身的信息,这就是您在创建yaml文件时所做的。要运行该拓扑,需要将yaml文件的路径作为命令行参数提供。
用法:hdfsfiletopology[topology name][yaml config file]
这个库的作者在这里做了一个很好的描述:storm hdfs的用法。
如果您阅读源代码,您会发现yaml文件的内容将用于配置hdfs。正确地说,它可能是像hdfs默认值的东西,但我不能肯定。
最好问问图书馆的作者。