我是Spark的新手。
我想使用 Spark 和 map-reduce 方法并行化我的计算。但是这个计算,我把它放到映射阶段的 PairFunction 实现中,需要一些上下文来初始化。此上下文包括来自第三方 jar 的几个单例对象,并且此对象不可序列化,因此我无法将它们分布在工作节点上,也无法在我的 PairFunction 中使用它们。
所以我的问题是:我是否可以使用 Apache Spark 以某种方式并行化需要不可序列化上下文的作业?还有其他解决方案吗?也许我可以以某种方式告诉 Spark 在每个工作节点上初始化所需的上下文?
您可以尝试使用 mapPartition
或 foreachPartition
在执行器中初始化您的第三方 jar
rdd.foreachPartition { iter =>
//initialize here
val object = new XXX()
iter.foreach { p =>
//then you can use object here
}
}