Apache Spark和非可序列化的应用程序上下文

时间:2016-01-25 13:20:03

标签: java serialization apache-spark mapreduce

我是Spark的新人。

我想使用Spark和map-reduce方法并行化我的计算。 但是我将此计算放入了Map阶段的PairFunction实现中,需要初始化一些上下文。这个上下文包含来自第三方jar的几个单例对象,并且这些对象不是可序列化的,所以我不能在工作节点上传播它们,也不能在我的PairFunction中使用它们。

所以我的问题是:我可以以某种方式并行化使用Apache Spark需要非可序列化上下文的作业吗?还有其他解决方案吗?也许我可以告诉Spark在每个工作节点上初始化所需的上下文?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用mapPartitionforeachPartition在执行程序中初始化第三方jar。

rdd.foreachPartition { iter =>
  //initialize here
  val object = new XXX()
  iter.foreach { p =>
    //then you can use object here
  }
}