【发布时间】:2018-11-24 11:12:21
【问题描述】:
我在绝望中写到这里……
我有 2 个用户:
- 1 个本地用户,在 Linux 中创建。工作 100% 正常,字数完美。 Kerberized 集群。有效票。
- 1 Active Directory 用户,可以登录,但 pyspark 指令(相同字数)失败。与上述相同的 kdc 票。
线程“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)
我正在运行的代码。超级简单。
import findspark
findspark.init()
from pyspark import SparkConf, SparkContext
conf = SparkConf().setMaster("yarn")
sc = SparkContext(conf=conf)
它在最后一条指令中以错误结束,出现上述错误(见异常)。
?/.ivy2/local -> 这是问题所在,但我不知道发生了什么:(。
对于 Linux 用户,它可以完美运行...但是对于本地系统中不存在但具有 /home/userFolder 的 AD 用户...我有这个问题 :(
请帮助...我已经到了精神错乱的地步...我在互联网的每个角落都用谷歌搜索了,但我没有找到任何解决这个问题/错误的方法:(stackoverflow 是我最后的选择 heeeeeeeeeelp
【问题讨论】:
-
这里有同样的问题,但在我的情况下,这是因为我使用的是 openshift,它为每个部署创建一个唯一的用户 ID。看起来 ivy 无法通过系统调用检索用户的详细信息。
-
@CarlF.:你解决了 OpenShift 的问题了吗?我们有同样的问题。
-
@KeyMaker00 是的。这有点麻烦,但解决方案是使 docker 映像中的 /etc/passwd 文件可由组 root 写入,然后在容器启动时为随机分配的用户添加一个条目。本指南很有帮助。 docs.openshift.com/container-platform/3.11/creating_images/…
标签: apache-spark pyspark ivy jupyterhub