gpt4 book ai didi

apache-spark - basedir必须是绝对: ?/.ivy2/local

转载 作者:行者123 更新时间:2023-12-04 05:24:50 49 4
gpt4 key购买 nike

我在绝望的状态下在这里写...

我有2个用户:

  • 1个本地用户,在Linux中创建。可以100%很好地工作,字数统计效果很好。 Kerberos集群。有效票证。
  • 1个Active Directory用户,可以登录,但是pyspark指令(相同的字数)失败。与上面一张相同的kdc票。

  • Exception in thread "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) at org.apache.ivy.plugins.repository.file.FileRepository.(FileRepository.java:44) at org.apache.spark.deploy.SparkSubmitUtils$.createRepoResolvers(SparkSubmit.scala:943) at org.apache.spark.deploy.SparkSubmitUtils$.buildIvySettings(SparkSubmit.scala:1035) at org.apache.spark.deploy.SparkSubmit$$anonfun$2.apply(SparkSubmit.scala:295) at org.apache.spark.deploy.SparkSubmit$$anonfun$2.apply(SparkSubmit.scala:295) at scala.Option.getOrElse(Option.scala:121) at org.apache.spark.deploy.SparkSubmit$.prepareSubmitEnvironment(SparkSubmit.scala:294) at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:153) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:119) at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)



    我正在运行的代码。 super 简单。
    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

    最佳答案

    上下文

    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,那么您将得到错误:

    Exception in thread "main" java.lang.IllegalArgumentException: basedir must be absolute: ?/.ivy2/local



    解决方案1( Spark 发射或 Spark 提交)

    Rocke Yang所述,您可以通过设置配置属性spark.jars.ivy来启动spark-shell或spark-submit。例子:
    spark-shell --conf spark.jars.ivy=/tmp/.ivy

    解决方案2( Spark 发射器或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")

    票证已打开

    Spark-Community打开了一个 ticket

    关于apache-spark - basedir必须是绝对: ?/.ivy2/local,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50861477/

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