当前位置: 首页 > 知识库问答 >
问题:

Apache Storm可以用来处理具有动态属性集的元组吗?

沙柏
2023-03-14
{type=LogTransaction,timestamp=...,user=...,duration=...}
{type=LogEvent,timestamp=...,user=...,message=...}
public void declareOutputFields(OutputFieldsDeclarer ofd) {
    ofd.declare(new Fields("type", "attributes"));
}

然而,我相信在这一点上,Storm的许多更高级的功能将不再正常工作。例如,根据我的理解,我不能再使用Trident对任何属性执行groupby

有没有更好的方法来处理我在Apache Storm中错过的这类数据?我发现这篇文章描述了一个类似的问题,但是我希望避免为每个数据类型创建一个Java类。

共有1个答案

司徒焕
2023-03-14

您可以使用您自己的自定义字段,只要字段是可序列化的,那么在storm中使用多个Supervisor就可以很好地工作。

由于storm是一个分布式数据处理工具,并且当存在多个supervisor时,基于分组,某些bolt将向运行在不同supervisor上的bolt发出字段。在这种情况下,输出字段将被序列化并通过网络发送。这种序列化可以是常规java序列化或Kryo序列化(以避免网络延迟)。

因此,如果jvm不能序列化输出字段,您可能会遇到异常。

 类似资料:
  • 我想知道是否有什么方法可以使属性值动态。类似于这样: 感谢您的反馈。在我的例子中,属性值是系统特定的,应该在测试运行时生成。

  • 问题内容: 我正在考虑编写可产生具有重复属性的HTML标签的代码,如下所示: 这是合法的HTML吗?-值之一优先于另一个吗?我可以依靠半现代的浏览器(IE> = 9)来解析它而不会窒息吗? 还是我要在这里做一些真正愚蠢的事情? 问题答案: 在一个元素中两次具有相同的属性名称是无效的。对此的权威性参考有些复杂,因为旧的HTML版本名义上是基于SGML,而对SGML标准的规范性引用暗含了这种限制。在H

  • 问题内容: 我有以下实体: 我的属性ScriptItem是其他3个类的接口。是否可以将JPA配置为在运行时执行时设置正确的类ID? 其他资源: 我应该使用哪些注释来让JPA理解要保存3个类之一的ID? 提前致谢, 问题答案: 这确实是一个好主意,但不幸的是,JPA不支持将接口直接映射为实体属性。 您只能映射直接用注释的顶级类。这个顶级类可以实现一个接口。 这个功能已经被要求并讨论了很长时间。 根据

  • 如果集合包含具有特定属性值的元素,我想断言(使用JUnit,而不是任何其他依赖项,如hamcrest)。 我发现这个问题如何断言迭代包含具有特定属性的元素?使用危害冠。 一种选择是重写< code>equals方法,只检查我想要比较的属性,但这不是一个好的解决方案。 有没有一种优雅的方法可以使用JUnit 4来实现这一点,或者我应该对其进行编码并循环访问集合以检查值?

  • 我正在使用NiFi Jolt处理器来转换一些JSON数据。 我的JSON字段类型包含共享属性和包含实际类型名称列表的数组。 我需要将“流派”属性转换成一个“流派”数组,包含公共属性和不同流派名称的列表。 我有以下JSON输入: 我尝试了以下规格: 这是我的预期输出: 但结果是:

  • 问题内容: 我正在考虑通过在属性链接上启用ajax来减少javascript代码量的方法。例: 将禁用链接()的默认行为,并使用该值进行Ajax调用并将其插入定义的元素ID中。 我不是JS专家,所以我很高兴使用此方法的任何想法或陷阱。像cache:true这样的选项也可以传递,这很酷,但是并不是真正需要的,因为我想这样做以获得包含或多或少实时数据的局部视图(不需要缓存)。 (这是从我看到的有关Fa