Apache spark 在spark streaming中清理内存
我们正在使用spark流来处理和聚合事件。 作业从卡夫卡主题读取事件,聚合它们并写入另一个卡夫卡主题。我们正在使用mapWithState函数进行有状态流,并将检查点设置到s3中。由于我们设置了超时(相当长的会话超时),所有状态都会在一段时间内被删除 正如我们所观察到的那样,内存在这段时间内变得越来越满,作业挂起(最终失败)。是否有一种配置方法,使状态不会保留在内存中Apache spark 在spark streaming中清理内存,apache-spark,out-of-memory,spark-streaming,Apache Spark,Out Of Memory,Spark Streaming,我们正在使用spark流来处理和聚合事件。 作业从卡夫卡主题读取事件,聚合它们并写入另一个卡夫卡主题。我们正在使用mapWithState函数进行有状态流,并将检查点设置到s3中。由于我们设置了超时(相当长的会话超时),所有状态都会在一段时间内被删除 正如我们所观察到的那样,内存在这段时间内变得越来越满,作业挂起(最终失败)。是否有一种配置方法,使状态不会保留在内存中 有没有清理状态的方法?对于内存清理,您应该依靠垃圾收集。只要有人引用这个状态,它就会一直保持,所以你最好的办法就是将内存提高到工
有没有清理状态的方法?对于内存清理,您应该依靠垃圾收集。只要有人引用这个状态,它就会一直保持,所以你最好的办法就是将内存提高到工作所需的数量,或者以某种方式优化它,使GC能够启动并清理所有内容。是的……我同意。我的疑问是,一旦数据被检查,为什么它仍然在内存中。为什么所有的状态对象都在内存中,即使没有收到特定密钥的事件。当旧状态键的事件发生时,有没有一种方法可以明确地告诉您从检查点删除和读取