在rdd.saveashadoopfile中重用sparkhadoopwriter

krcsximq  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(366)

spark rdd.saveashadoopfile非常浪费,因为它在每次写入时都会生成一个新的sparkhadoopwriter。我们有一个备份spark作业的用例,因为这些writer上的gc无法跟上传入流。
有没有人重新实现了这个方法,其中sparkhadoopwriter是根据写目标是哪个bucket重用的。如果我朝这个方向走,有没有什么架构上的原因可以解释为什么这个努力会失败?

kmb7vmvb

kmb7vmvb1#

RDD.saveAsHadoopFile 在执行器上执行,如果我们想重用 SparkHadoopWriter ,那么我们可能需要在每次执行器执行作业时执行序列化和反序列化。
尽管在体系结构上,您可以重新编写spark核心代码,也可以进行扩展 RDD 以及 PairRDDFunctions 并添加序列化/反序列化代码并重用 SparkHadoopWriter 但在我看来,这可能会增加更多的开销,因为你需要序列化或反序列化。
虽然不确定您的用例,但通常(尽管有例外)最好有没有序列化的独立代码单元(除非需要),以便它创建对象,并在作业完成后立即销毁对象。但是如果需要,我们可以调整jvm来处理对象的创建/删除。

相关问题