spark java:在sparklauncher中指定依赖项jar

7cwmlq89  于 2021-05-27  发布在  Spark
关注(0)|答案(2)|浏览(739)

我正试着用 SparkLauncher . 我的spark应用程序jar不是一个胖jar,它依赖于许多其他第三方jar,有没有一种方法可以在其中指定依赖jar SparkLauncher ?

mfpqipee

mfpqipee1#

当使用addjar方法添加多个jar时,我们看到一个问题,即文件路径不正确,或者文件名、目录名或卷标语法不正确。这个问题的原因是sparklauncher内部调用spark submit,这些调用在考虑用逗号分隔的双引号中的jar时遇到问题。当我将spark-submit2.cmd的内容复制到spark-submit.cmd时,上面的问题就解决了,我们可以执行驱动程序了。

monwx1rj

monwx1rj2#

使用 addJar ,请参见https://spark.apache.org/docs/latest/api/java/org/apache/spark/launcher/sparklauncher.html#addjar(java.lang.string)

Process spark = new SparkLauncher()
            .addJar("/path/to/local/jar/file1.jar")
            .addJar("/path/to/local/jar/file2.jar")

在这种情况下,jar文件将被分发。
或者将它们添加到 DRIVER_EXTRA_CLASSPATH 以及 EXECUTOR_EXTRA_CLASSPATH (但是依赖关系需要手动分发,或者需要位于共享文件夹中,每个工作人员都可以访问该文件夹)。

Process spark = new SparkLauncher()
            .setConf(SparkLauncher.DRIVER_EXTRA_CLASSPATH, "/path/to/jar/file.jar")
            .setConf(SparkLauncher.EXECUTOR_EXTRA_CLASSPATH, "/path/to/jar/file.jar")

通过包含类路径中的所有文件,还可以包含多个jar文件:

Process spark = new SparkLauncher()
            .setConf(SparkLauncher.DRIVER_EXTRA_CLASSPATH, "/path/to/jar/*")
            .setConf(SparkLauncher.EXECUTOR_EXTRA_CLASSPATH, "/path/to/jar/*")

相关问题