有没有一种方法可以指定在驱动程序和执行程序上同时推送完整的jar文件夹?

时间:2019-05-18 13:08:13

标签: maven apache-spark sbt

是否有任何方法可以指定要在驱动程序和执行器上推送的jar的完整文件夹路径,例如--jars中的spark-submit,但逗号分隔的jar名称带有完整路径除外。但是,如果我们确实要在驱动程序和执行程序上添加太多jar,这将是繁琐的工作。

2 个答案:

答案 0 :(得分:1)

  

问题:是否有一种方法可以指定在两个驱动程序上同时推送完整的jar文件夹   和执行人?

是的,您可以制作uber jar,它是自包含的分发包,其中包含了所有功能。

如果您正在使用maven,则可以使用maven shade插件或assembly plugin进行采样。下面是阴影示例。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.maventest</groupId>
    <artifactId>mytest</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>mytest</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.3</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <finalName>uber-${artifactId}-${version}</finalName>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

如果您使用的是sbt,请参见this

您的火花提交看起来像....

spark-submit [PATH_TO_YOUR_UBER_JAR]/[YOUR_UBER_JAR].jar

进一步阅读例如Google的文章:Managing Java dependencies for Apache Spark applications

答案 1 :(得分:0)

在纱线上运行火花,必须能够在spark.yarn.archive配置文件中设置spark.yarn.jarsspark-defaults.conf

spark.yarn.archive用于分发归档文件,其中包含执行器上所需的所有jar。

spark.yarn.jars用于单独的罐子。

您可以在official docs中找到更多信息。