Spark set executor的类加载器

时间:2018-03-26 12:53:28

标签: scala apache-spark rdd

我有一些RDD[String],我需要对此RDD执行一些过滤。我也有

public class MyCustomClassLoader extends ClassLoader { }

所以它看起来如下:

val rdd: RDD[String] = //...
rdd.filter(str => {
    //Here I need to set Thread.currentThread().setContextClassLoader() 
    //to MyCustomClassLoader
})

是否可以这样做并避免在每个Thread.currentThread().setContextClassLoader(myCustomClassLoader)记录上呼叫RDD。在我的情况下,这太贵了。

我知道Spark的CoarseGrainedExecutorBackend使用ChildFirstURLClassLoaderMutableURLClassLoader

有没有办法覆盖它?

UPD :出于某些性能原因,我使用Class动态生成ASM。所以在驱动程序方面,我有一堆Class个对象,它们代表Function[String, AnyRef]的子类。我需要在执行程序上交付它们并正确加载。

0 个答案:

没有答案