使用storm hdfs连接器将数据写入hdfs

a7qyws3x  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(387)

“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部分?

ia2d9nvy

ia2d9nvy1#

我觉得代码很清楚。为了 HdfsBolt 为了能够写入hdfs,它需要关于hdfs本身的信息,这就是您在创建yaml文件时所做的。
要运行该拓扑,需要将yaml文件的路径作为命令行参数提供。
用法:hdfsfiletopology[topology name][yaml config file]
这个库的作者在这里做了一个很好的描述:storm hdfs的用法。
如果您阅读源代码,您会发现yaml文件的内容将用于配置hdfs。正确地说,它可能是像hdfs默认值的东西,但我不能肯定。
最好问问图书馆的作者。

相关问题