gpt4 book ai didi

java - spark-submit找不到类(当类包含在jar中时)

转载 作者:行者123 更新时间:2023-12-02 20:15:46 29 4
gpt4 key购买 nike

我正在使用Gradle用Java构建一个非常简单的HelloWorld Spark作业:

package com.example;

public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
我的gradle配置非常简单:
def sparkVersion = "2.4.6"
def hadoopVersion = "2.7.3"

dependencies {
compile "org.apache.spark:spark-core_2.11:$sparkVersion"
compile "org.apache.spark:spark-sql_2.11:$sparkVersion"
compile 'org.slf4j:slf4j-simple:1.7.9'
compile "org.apache.hadoop:hadoop-aws:$hadoopVersion"
compile "org.apache.hadoop:hadoop-common:$hadoopVersion"
testCompile group: 'junit', name: 'junit', version: '4.12'
}
我还确保我构建了一个远 jar 以包含所有依赖项,就像SBT程序集在Scala中所做的那样:
jar {
zip64 = true
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
}
构建工作良好,我的类(class)出现在jar中:
jar tvf build/libs/output.jar | grep -i hello
com/example/HelloWorld.class
但是,在运行 Spark 提交作业时:
 spark-submit --class 'com.example.HelloWorld' --master=local build/libs/output.jar
我得到的只是调试日志:
20/09/21 13:07:46 WARN Utils: Your hostname, example.local resolves to a loopback address: 127.0.0.1; using 192.168.43.208 instead (on interface en0)
20/09/21 13:07:46 WARN Utils: Set SPARK_LOCAL_IP if you need to bind to another address
20/09/21 13:07:46 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
log4j:WARN No appenders could be found for logger (org.apache.spark.deploy.SparkSubmit$$anon$2).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
我的本地Spark正确地报告了为Hadoop 2.7.3构建的Scala 2.11和Spark 2.4.6。
我还测试了一个更复杂的Spark作业,但输出日志相同。
但是,该代码在IntelliJ Idea中运行良好(选中了“包含提供的”范围内的“包括依赖项”选项)。
我想念什么吗?非常感谢你

最佳答案

问题可能来自zip64 = true或发胖的jar生成器(尽管shadowJar插件也无法解决此问题)。
我决定改用Maven,并使用maven-assembly-plugin生成胖 jar ,maven-compiler-plugin仅包含与我要构建的Spark作业相关的某些文件,最后使用maven-jar-plugin避免构建包含所有spark作业的jar(每个作业1个作业) jar )。

关于java - spark-submit找不到类(当类包含在jar中时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63985800/

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