我正在使用 Spark Streaming,并且从 Kafka 读取流。阅读此流后,我将其添加到 hazelcast map 中。
问题是,我需要在从 Kafka 读取流后立即过滤映射中的值。
我正在使用下面的代码来并行化 map 值。
List<MyCompObj> list = CacheManager.getInstance().getMyMap().values().stream().collect(Collectors.toList());
JavaRDD<MyCompObj> myObjRDD = sparkContext.parallelize(list);
但在这个逻辑中,我在另一个逻辑中使用 JavaRDD,即 JavaInputDStream.foreachRDD,这会导致序列化问题。
第一个问题是,如何通过事件驱动运行我的 Spark 作业?
另一方面,我只是想获得一些关于预定 Spark 作业的意见。 安排 Spark 作业在特定时间执行的最佳实践是什么?
最佳答案
您考虑过Hazelcast Jet ?它是由 Hazelcast 构建的流媒体引擎。不断地将数据从 Kafka 泵送到 Hazelcast 是一种容错方式,这是它的面包和黄油,请参阅 code sample
Jet 与嵌入式 Hazelcast 打包在一起,可以为您简化架构。
关于java - Spark Streaming 之后立即进行 Spark RDD 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52410409/