如何在"local-cluster"模式下对 Spark 程序进行 scala 测试?



我有一个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")

相关内容

最新更新