我有一个Spark程序,它在本地模式下有非常完整的测试套件,但是当部署在Spark集群上时,它显示了几个序列化和同步问题,测试套件无法检测到。
因此,我想将这些测试迁移到本地集群模式。这是我的SparkConf设置:
new SparkConf().setAppName("unit")
.setMaster("local-cluster[2,4,1024]")
.setAppName("DataPassportSparkTest")
.setSparkHome(System.getenv("SPARK_HOME"))
.set("spark.driver.classpath", sys.props("java.class.path"))
.set("spark.executor.classpath", sys.props("java.class.path"))
.set("spark.executor.memory", "1g")
.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
然而,我试图将java类路径添加到Spark应用程序中似乎无缘无故地失败了,所以Spark总是抱怨我的类找不到。是否有一种方法通知Spark我的类路径的存在?
OK,这是一个愚蠢的错误,我所需要的就是将"classpath"替换为"extraClassPath":
new SparkConf().setAppName("unit")
.setMaster("local-cluster[2,4,1024]")
.setAppName("DataPassportSparkTest")
.setSparkHome(System.getenv("SPARK_HOME"))
.set("spark.driver.extraClassPath", sys.props("java.class.path"))
.set("spark.executor.extraClassPath", sys.props("java.class.path"))
.set("spark.executor.memory", "1g")
.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")