Joa*_*eto 11 ivy apache-spark pyspark jupyterhub
我在完全绝望的状态下写在这里......
我有 2 个用户:
线程“main”中的异常 java.lang.IllegalArgumentException: basedir must be absolute: ?/.ivy2/local at org.apache.ivy.util.Checks.checkAbsolute(Checks.java:48) at 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(火花提交。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)
我正在运行的代码。超级简单。
import findspark
findspark.init()
from pyspark import SparkConf, SparkContext
conf = SparkConf().setMaster("yarn")
sc = SparkContext(conf=conf)
Run Code Online (Sandbox Code Playgroud)
它以上述错误的最后一条指令中的错误结束(参见异常)。
?/.ivy2/local -> 这就是问题所在,但我不知道发生了什么:(。
对于 Linux 用户,它可以完美运行......但是对于本地系统中不存在但具有 /home/userFolder 的 AD 用户......我有这个问题:(
请帮忙...我已经到了疯狂的地步...我已经搜索了互联网的每个角落,但我还没有找到解决这个问题/错误的任何方法:( stackoverflow 是我最后的手段 heeeeeeeeeelp
Key*_*r00 10
语境
Ivy 需要一个名为 的目录.ivy2,通常位于主目录中。您还.ivy2可以通过在 Spark 启动或执行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);
}
Run Code Online (Sandbox Code Playgroud)
如您所见,如果ivy.home未设置,并且user.home也未设置,则会出现错误:
线程“main”中的异常 java.lang.IllegalArgumentException: basedir must be absolute: ?/.ivy2/local
解决方案 1(spark-shell 或 spark-submit)
正如Rocke Yang所说,您可以通过设置配置属性 spark.jars.ivy 来启动 spark-shell 或 spark-submit。例子:
spark-shell --conf spark.jars.ivy=/tmp/.ivy
Run Code Online (Sandbox Code Playgroud)
解决方案 2(spark-launcher 或 yarn-client)
第二种解决方案是以编程方式调用 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")
Run Code Online (Sandbox Code Playgroud)
已开票
我遇到过类似的问题。
SparkSubmit会直接寻找ivy home。如果没有找到就会报错。并且名字在途中略有改变。
class SparkSubmitArguments {
ivyRepoPath = sparkProperties.get("spark.jars.ivy").orNull
}
Run Code Online (Sandbox Code Playgroud)
我们可以这样传递ivy.home目录
spark-shell --conf spark.jars.ivy=/tmp/.ivy
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5241 次 |
| 最近记录: |