我在这里写完全绝望的状态......
我有2个用户:
线程中的异常" main" java.lang.IllegalArgumentException:basedir 必须是绝对的:?/。ivy2 / local 在org.apache.ivy.util.Checks.checkAbsolute(Checks.java:48) 在org.apache.ivy.plugins.repository.file.FileRepository.setBaseDir(FileRepository.java:135) 在org.apache.ivy.plugins.repository.file.FileRepository。(FileRepository.java:44) 在org.apache.spark.deploy.SparkSubmitUtils $ .createRepoResolvers(SparkSubmit.scala:943) 在org.apache.spark.deploy.SparkSubmitUtils $ .buildIvySettings(SparkSubmit.scala:1035) 在org.apache.spark.deploy.SparkSubmit $$ anonfun $ 2.apply(SparkSubmit.scala:295) 在org.apache.spark.deploy.SparkSubmit $$ anonfun $ 2.apply(SparkSubmit.scala:295) 在scala.Option.getOrElse(Option.scala:121) 在org.apache.spark.deploy.SparkSubmit $ .prepareSubmitEnvironment(SparkSubmit.scala:294) 在org.apache.spark.deploy.SparkSubmit $ .submit(SparkSubmit.scala:153) 在org.apache.spark.deploy.SparkSubmit $ .main(SparkSubmit.scala:119) 在org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
守则I正在运行。超级简单。
import findspark
findspark.init()
from pyspark import SparkConf, SparkContext
conf = SparkConf().setMaster("yarn")
sc = SparkContext(conf=conf)
在上一条错误的最后一条指令中以错误结束(参见异常)。
?/.ivy2/local
- >这是问题,但我不知道发生了什么:(。
使用Linux用户它可以很好地工作......但是AD用户并不存在于本地系统中,但有/ home / userFolder ...我有这个问题:(
请帮助......我已经到了疯狂的地步......我已经搜索了互联网的每个角落,但我还没有找到任何解决这个问题/错误的方法:( stackoverflow是我最后的手段heeeeeeeeeelp
答案 0 :(得分:0)
我也遇到了类似的问题。
SparkSubmit将直接寻找常春藤的家。如果找不到,它将报告错误。而且名称在途中稍有变化。
class SparkSubmitArguments {
ivyRepoPath = sparkProperties.get("spark.jars.ivy").orNull
}
我们可以这样传递ivy.home目录
spark-shell --conf spark.jars.ivy=/tmp/.ivy
答案 1 :(得分:0)
上下文
Ivy需要一个名为.ivy2
的目录,通常位于主目录中。您还可以通过在启动Spark或执行.ivy2
时提供配置属性来配置spark-submit
的位置。
问题来自哪里
在IvySettings.java(针对ant-ivy版本2.2.0的第796行)中,有以下行:
if (getVariable("ivy.home") != null) {
setDefaultIvyUserDir(Checks.checkAbsolute(getVariable("ivy.home"), "ivy.home"));
Message.verbose("using ivy.default.ivy.user.dir variable for default ivy user dir: " + defaultUserDir);
} else {
setDefaultIvyUserDir(new File(System.getProperty("user.home"), ".ivy2"));
Message.verbose("no default ivy user dir defined: set to " + defaultUserDir);
}
如您所见,如果未设置ivy.home
,并且也未设置user.home
,则会收到错误消息:
线程“ main”中的异常java.lang.IllegalArgumentException:basedir必须是绝对的:?/。ivy2 / local
解决方案1(火花壳或火花提交)
正如Rocke Yang所述,您可以通过设置配置属性spark.jars.ivy来启动spark-shell或spark-submit。示例:
spark-shell --conf spark.jars.ivy=/tmp/.ivy
解决方案2(火花发射器或纱线客户端)
第二种解决方案是在以编程方式调用Submit方法时设置配置属性:
sparkLauncher.setSparkHome("/path/to/SPARK_HOME")
.setAppResource("/path/to/jar/to/be/executed")
.setMainClass("MainClassName")
.setMaster("MasterType like yarn or local")
.setDeployMode("set deploy mode like cluster")
.setConf("spark.executor.cores","2")
.setConf("spark.jars.ivy","/tmp/.ivy")
门票已打开
Spark社区打开了一个ticket