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

时间:2014-11-07 12:42:55

标签: hadoop yaml hdfs apache-storm snakeyaml

“storm-hdfs连接器”的源代码,可用于将数据写入HDFS。 github网址是: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 个答案:

答案 0 :(得分:0)

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

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

  

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

图书馆的作者在这里做了很好的描述:Storm-HDFS Usage

如果您阅读source code,您会发现YAML文件的内容将用于配置HDFS。正确的可能是HDFS Defaults,但我无法确定。

要问图书馆的作者是不错的。