gpt4 book ai didi

java - Apache Storm - 从 Config 读取 YAML 列表

转载 作者:行者123 更新时间:2023-12-01 12:06:52 24 4
gpt4 key购买 nike

我正在编写一个 Apache Storm 拓扑,它在命令行上接收配置文件。配置文件是 YAML,如下所示

#Ports
ports:
- 9998
- 9997
- 9996

我使用snakeyaml和以下代码将配置文件加载到Storm配置中,资源设置为配置yaml文件路径的字符串:

Config conf = new Config();
Yaml yaml = new Yaml()
Map rs = (Map) yaml.load(new InputStreamReader(new FileInputStream(resource)));
conf.putAll(rs);

我已验证 Config 对象现在包含端口列表。如果我打印“端口”的值,它看起来是以下“[9998, 9997, 9996]”。

我的问题是如何将其放入 Array、ArrayList 或任何可以在 Java 中使用的数据结构中?我一直在使用 backtype.storm.utils.Utils 类,它有一个辅助方法 get ,但它仅在我有单个值而不是值列表时才有效。

我尝试过这样调用它:

 String[] ports = Utils.get(conf, "mimes", null); 

但是,我遇到了转换异常。我也尝试过:

 String ports = Utils.get(conf, "mimes", null); 

检查我是否可以获取整个字符串并且还有强制转换异常。我不确定 Config 对象将此列表存储为什么。一张 map ?

如有任何帮助,我们将不胜感激。

最佳答案

我建议使用 Jackson 的 YAML 模块 ( https://github.com/FasterXML/jackson-dataformat-yaml );这就是许多框架(例如 DropWizard)所做的。如果是这样,您可以像使用 JSON 一样使用数据绑定(bind)来构造用于配置访问的 POJO:

ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
Config config = mapper.readValue(fileOrInputStream, Config.class);
int port = mapper.server.port; // or getters, or however your Config object is laid out

关于java - Apache Storm - 从 Config 读取 YAML 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27530968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com