火花流之后立即使用Spark RDD过滤

时间:2018-09-19 16:28:17

标签: java apache-spark bigdata spark-streaming hazelcast

我正在使用火花流,并且从Kafka中读取流。阅读此流后,我将其添加到hazelcast地图。

问题是,我需要在从Kafka中读取流后立即从地图中过滤值。

我正在使用以下代码来并行化地图值。

List<MyCompObj> list = CacheManager.getInstance().getMyMap().values().stream().collect(Collectors.toList());
JavaRDD<MyCompObj> myObjRDD = sparkContext.parallelize(list);

但是按照这种逻辑,我在另一个JavaInputDStream.foreachRDD中使用JavaRDD,这会导致序列化问题。

第一个问题是,如何通过事件驱动来运行我的Spark作业?

另一方面,我只想对预定的火花作业发表一些意见。 安排火花作业在特定时间执行它的最佳实践是什么?

2 个答案:

答案 0 :(得分:4)

您是否考虑过Hazelcast Jet?这是Hazelcast构建的流引擎。从卡夫卡不断向Hazelcast传输数据的容错方式是面包和黄油,请参阅code sample

Jet与嵌入式Hazelcast打包在一起,为您简化了体系结构。

答案 1 :(得分:0)

我通过将流处理和批处理分为两个部分来解决了我的问题。

我正在使用石英和SparkLauncher来触发新工作(example