编程语言
首页 > 编程语言> > java – 我们可以将Spark流用于基于时间的事件

java – 我们可以将Spark流用于基于时间的事件

作者:互联网

我有如下要求

>有多个设备根据设备配置生成数据.例如,有两个设备按照自己的间隔生成数据,假设d1每15分钟生成一次,d2每30分钟生成一次
>所有这些数据都将发送给Kafka
>我需要使用数据并为每个设备执行计算,该计算基于当前小时生成的值和下一小时生成的第一个值.例如,如果d1从12:00 AM-1:00 AM每隔15分钟产生数据,则计算基于该小时产生的值和从凌晨1:00 AM-2:00 AM产生的第一个值.如果该值不是从上午1:00到凌晨2:00生成,那么我需要考虑从上午12:00 AM到凌晨1:00的数据并保存数据存储库(时间序列)
>像这样,将有’n’个设备,每个设备都有自己的配置.在上述场景中,设备d1和d2每1小时产生一次数据.可能有其他设备将每3小时,6小时生成数据.

目前,这个要求是用Java完成的.由于设备的计算越来越多,我想知道是否可以将Spark / Spark Streaming应用于这种情况?可以共享任何与这些要求相关的文章,这样它将会有很大的帮助.

解决方法:

如果,这是一个很大的if,计算将是设备方面的,您可以使用主题分区并使用设备数量来扩展分区数.消息按每个分区的顺序传递,这是您需要了解的最强大的想法.

但是,有些谨慎的话:

>主题数量可能会增加,如果您想减少,可能需要清除主题并重新开始.
>为了确保设备均匀分布,您可以考虑为每个设备分配一个guid.
>如果计算不涉及某种机器学习库并且可以在普通java中完成,那么为此使用普通的旧消费者(或Streams)可能是个好主意,而不是通过Spark-Streaming对它们进行抽象.级别越低,灵活性越大.

你可以检查一下. https://www.confluent.io/blog/how-choose-number-topics-partitions-kafka-cluster

标签:java,bigdata,apache-spark,spark-streaming
来源: https://codeday.me/bug/20190705/1387348.html