我是新手,想要解决问题。我们有一个用例,不同的用户希望以不同的方式实时处理数据,这些用户来来去去。据我所知,我可以为底层数据创建一个流,然后进入foreachRDD来运行我的计算。但这假设我知道我需要做的所有计算'priori。
当新用户需要新计算时,是否可以通过在单独的线程中进入foreachRDD来添加其他计算?
提前致谢。
答案 0 :(得分:0)
不,目前不可能。 foreachRDD中的代码被序列化并发送给worker。 foreachRDD只是DAG中的一个步骤(如执行计划),因此在运行时很难进行转换。 允许类似的东西的方法如下: 1)在你的流前添加kafka,以便在火花流之前有一个缓冲区 2)当你想要改变代码时,你必须停止火花流传输上下文,更改代码,重新编译作业并重新提交作业。
Kafka将在火花停止期间缓冲数据,因此您不会丢失数据。