如何将可以在运行时定义的规则应用于流式数据集?

Posted

技术标签:

【中文标题】如何将可以在运行时定义的规则应用于流式数据集?【英文标题】:How to apply rules that can be defined at runtime to streaming datasets? 【发布时间】:2017-06-20 19:38:22 【问题描述】:

不确定标题是否适合我想要实现的目标,请耐心等待。

我将从定义我的用例开始:

许多(比如数百万)物联网设备正在向我的 Spark 流发送数据。这些设备每 10 秒发送一次当前温度水平。 所有这些物联网设备的所有者都可以定义预设规则,例如:如果温度 > 50 则执行某项操作。

如果在某个时间段内超过 50 个条件,我正在尝试确定是否可以输出这些设备中有多少符合此条件。问题是规则是实时定义的,应该实时应用于 Spark 作业。

我会怎么做。 Spark 是适合这项工作的工具吗?

非常感谢

【问题讨论】:

这些规则是如何定义的? Spark 是正确的工具吗 -> 您有哪些选择? 【参考方案1】:

Spark 是适合这项工作的工具吗?

我想是的。

规则是实时定义的,应实时应用于 Spark 作业。

让我们假设规则在数据库中,因此 Spark 会在每个批处理间隔中获取它们并一个一个地应用它们。它们也可以在文件或任何其他存储中。这与主要要求是正交的。

我该怎么做?

批处理间隔将是“某个时间段”。我假设有效载荷将具有 deviceId 和温度。这样,您就可以在温度范围内使用常规过滤器并返回 deviceId。您不需要有状态的管道,除非您想在超过批处理间隔的时间内累积数据。

【讨论】:

以上是关于如何将可以在运行时定义的规则应用于流式数据集?的主要内容,如果未能解决你的问题,请参考以下文章

Drools - 能够在运行时定义规则?

C# 特性

如何在.NET 运行时将文件夹添加到程序集搜索路径?

如何将时间序列分解应用于自定义数据集

2.HDFS

如何回滚其他上下文的变更集?