我是Spark中的新成员。Apache Spark和不可序列化的应用程序上下文
我想使用Spark和map-reduce方法并行化我的计算。 但是,我将这个计算放到Map阶段的PairFunction实现中,需要一些要初始化的上下文。这个上下文包含来自第三方jar的多个单例对象,并且这些对象不是可序列化的,所以我不能在工作节点上传播它们,并且不能在我的PairFunction中使用它们。
所以我的问题是:我可以以某种方式并行化需要使用Apache Spark不可序列化的上下文的作业吗?还有其他解决方案吗?也许我可以告诉Spark在每个工作节点上初始化所需的上下文?
你的问题对我来说有点含糊。我会试着根据我对它的理解来回答。 Spark有两个主要的执行环境:代码以正常(非分布式)方式运行的驱动程序。这是您可以初始化上下文并打开spark上下文的地方。分布式代码将在工作人员上执行。 –
我的问题是关于应该通过工作人员执行的分布式代码。问题是这段代码必须使用不可序列化的第三方对象。所以我不能在主服务器上实例化它们,然后通过网络传递给工作人员。我想知道是否有任何解决方法。 – Doob
如果您的代码将被运送给工人,它应该被序列化。没有解决办法。如果你不需要这些对象在工人内部,你可以声明它们是暂时的。 –