我需要对我每天收到的数据实施大量规则。
数据将包含有关用户操作的信息,例如某人点击广告。我们希望忽略一些基于规则的点击
- 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执行所有这些操作。
阅读有关大数据的更多信息,您觉得您的数据不是那么“大”,您也可以使用数据库,我建议您保持简单并从数据库中读取最后'x'小时数据并进行计算。
对于点击验证的Java设计模式,您可以查看Chain of Responsibility模式。
PS: - 我不是建筑师,你可能想看看其他答案。这个答案只是为您提供有关哪些技术可用的指导。