gpt4 book ai didi

java - 使用安装的spark和maven将Spark Scala程序编译成jar文件

转载 作者:行者123 更新时间:2023-11-30 07:18:51 25 4
gpt4 key购买 nike

仍在尝试熟悉maven并将我的源代码编译成jar文件以供spark-submit使用。我知道如何使用 IntelliJ 来实现此目的,但想了解它实际上是如何工作的。我有一个 EC2 服务器,其中已经安装了所有最新软件(例如 Spark 和 scala),并且有示例 SparkPi.scala 源代码,我现在想用 Maven 进行编译。我的愚蠢问题首先是,我是否可以只使用我安装的软件来构建代码,而不是从 Maven 存储库检索依赖项,以及如何从基本的 pom.xml 模板开始添加适当的需求。我不完全理解 Maven 到底在做什么以及如何测试源代码的编译?据我了解,我只需要拥有标准目录结构 src/main/scala ,然后想要运行 mvn package 即可。我也想用 Maven 而不是 sbt 进行测试。

最佳答案

除了@Krishna,如果您有 mvn 项目,请在 pom.xml 上使用 mvn clean package。确保您的 pom.xml 中有以下 build 来制作 fat-jar。 (这是我的案例,我是如何制作 jar 的)

<build><sourceDirectory>src</sourceDirectory>
<plugins><plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>assemble-all</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin></plugins>
</build>

了解更多详情:link如果您有sbt项目,请使用sbt clean assembly来制作fat-jar。为此,您需要以下配置,例如 build.sbt

assemblyJarName := "WordCountSimple.jar"
//
val meta = """META.INF(.)*""".r

assemblyMergeStrategy in assembly := {
case PathList("javax", "servlet", xs@_*) => MergeStrategy.first
case PathList(ps@_*) if ps.last endsWith ".html" => MergeStrategy.first
case n if n.startsWith("reference.conf") => MergeStrategy.concat
case n if n.endsWith(".conf") => MergeStrategy.concat
case meta(_) => MergeStrategy.discard
case x => MergeStrategy.first
}

还有plugin.sbt,例如:

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.13.0")

更多信息请参见thisthis

到目前为止,主要目标是获取具有目标文件夹中所有依赖项的 fat-jar。使用该 jar 在集群中运行,如下所示:

hastimal@nm:/usr/local/spark$ ./bin/spark-submit --class  com.hastimal.wordcount --master yarn-cluster  --num-executors 15 --executor-memory 52g --executor-cores 7 --driver-memory 52g  --driver-cores 7 --conf spark.default.parallelism=105 --conf spark.driver.maxResultSize=4g --conf spark.network.timeout=300  --conf spark.yarn.executor.memoryOverhead=4608 --conf spark.yarn.driver.memoryOverhead=4608 --conf spark.akka.frameSize=1200  --conf spark.io.compression.codec=lz4 --conf spark.rdd.compress=true --conf spark.broadcast.compress=true --conf spark.shuffle.spill.compress=true --conf spark.shuffle.compress=true --conf spark.shuffle.manager=sort /users/hastimal/wordcount.jar inputRDF/data_all.txt /output 

这里我有 inputRDF/data_all.txt/output 是两个参数。同样从工具的角度来看,我在 Intellij 中构建 IDE。

关于java - 使用安装的spark和maven将Spark Scala程序编译成jar文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37930875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com