对 Java 中的给定数据实施多个规则

Implementing multiple rules on given data in Java

我需要对每天收到的数据实施大量规则。

数据将包含有关用户操作的信息,例如有人点击广告。我们想忽略一些基于

等规则的点击
- anyone clicking the same ad more than 4 times in a minute --> ignore all clicks 4th onwards
- anyone clicking the same ad more than 4 times in an hour --> ignore all clicks 4th onwards
- anyone clicking different ads more than 10 times in a minute --> ignore all clicks for that user

每次点击都会有数据。示例:

User_ID AD_ID  CLICK_TIME
User1   ad1    2018-09-11 11:10:00
User1   ad1    2018-09-11 11:10:01
User1   ad1    2018-09-11 11:10:02
User1   ad1    2018-09-11 11:10:03
User1   ad1    2018-09-11 11:10:04
User1   ad1    2018-09-11 11:10:05

由于数据会很大,每条规则都需要数据聚合,然后检查计数。数据将在文件中提供。

我可以知道在 Java 中实施此类规则的最佳方法是什么吗?有没有我们可以使用的开源软件?

谢谢

这取决于数据流入的速度和What is Big Data?

中描述的其他因素

因为你最多只需要内存中最近几个小时的数据,我建议你看看Apache Spark。如果数据比较大,不需要实时计算,也可以看看Hadoop。 Spark 和 Hadoop 都可以很好地处理文件。

您还可以流式传输数据并使用 Kafka Streams 执行所有这些操作。

多看大数据,感觉自己的数据不是那么好"big",也可以用数据库,建议大家简单点,看最后一篇'x'来自数据库的小时数据并进行计算。

至于点击验证的 Java 设计模式,您可以查看 Chain of Responsibility 模式。

PS:- 我不是架构师,你可能想看看其他答案。此答案只是为您提供一些可用技术的指导。