0

可用于将数据写入 HDFS 的“storm-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 部分?

4

1 回答 1

0

我认为代码很清楚。为了HdfsBolt能够写入 HDFS,它需要有关 HDFS 本​​身的信息,这就是您在创建 YAML 文件时所做的事情。

要运行该拓扑,您需要提供该 YAML 文件的路径作为命令行参数。

用法:HdfsFileTopology [拓扑名称] [yaml 配置文件]

该库的作者在这里做了一个很好的描述:Storm-HDFS Usage

如果您阅读源代码,您会发现 YAML 文件的内容将用于配置 HDFS。正确地说,它可能类似于HDFS 默认值,但我不能确定。

最好问问图书馆的作者。

于 2014-11-07T13:01:04.127 回答