【问题标题】:Why does pyspark fail with "Unable to locate hive jars to connect to metastore. Please set spark.sql.hive.metastore.jars."?为什么 pyspark 失败并显示“无法找到 hive jars 以连接到 metastore。请设置 spark.sql.hive.metastore.jars。”?
【发布时间】:2020-07-04 00:03:53
【问题描述】:

我正在使用具有两个节点的 apache spark 版本 2.0.0 的独立集群,但我尚未安装 hive。创建数据框时出现以下错误。

from pyspark import SparkContext
from pyspark import SQLContext
sqlContext = SQLContext(sc)
l = [('Alice', 1)]
sqlContext.createDataFrame(l).collect()
---------------------------------------------------------------------------
IllegalArgumentException                  Traceback (most recent call last)
<ipython-input-9-63bc4f21f23e> in <module>()
----> 1 sqlContext.createDataFrame(l).collect()

/home/mok/spark-2.0.0-bin-hadoop2.7/python/pyspark/sql/context.pyc in createDataFrame(self, data, schema, samplingRatio)
    297         Py4JJavaError: ...
    298         """
--> 299         return self.sparkSession.createDataFrame(data, schema, samplingRatio)
    300 
    301     @since(1.3)

/home/mok/spark-2.0.0-bin-hadoop2.7/python/pyspark/sql/session.pyc in createDataFrame(self, data, schema, samplingRatio)
    522             rdd, schema = self._createFromLocal(map(prepare, data), schema)
    523         jrdd = self._jvm.SerDeUtil.toJavaArray(rdd._to_java_object_rdd())
--> 524         jdf = self._jsparkSession.applySchemaToPythonRDD(jrdd.rdd(), schema.json())
    525         df = DataFrame(jdf, self._wrapped)
    526         df._schema = schema

/home/mok/spark-2.0.0-bin-hadoop2.7/python/lib/py4j-0.10.1-src.zip/py4j/java_gateway.py in __call__(self, *args)
    931         answer = self.gateway_client.send_command(command)
    932         return_value = get_return_value(
--> 933             answer, self.gateway_client, self.target_id, self.name)
    934 
    935         for temp_arg in temp_args:

/home/mok/spark-2.0.0-bin-hadoop2.7/python/pyspark/sql/utils.pyc in deco(*a, **kw)
     77                 raise QueryExecutionException(s.split(': ', 1)[1], stackTrace)
     78             if s.startswith('java.lang.IllegalArgumentException: '):
---> 79                 raise IllegalArgumentException(s.split(': ', 1)[1], stackTrace)
     80             raise
     81     return deco

IllegalArgumentException: u'Unable to locate hive jars to connect to metastore. Please set spark.sql.hive.metastore.jars.'

所以我应该安装 Hive 还是编辑配置。

【问题讨论】:

    标签: apache-spark pyspark


    【解决方案1】:

    IllegalArgumentException: u'无法找到 hive jar 以连接到 Metastore。请设置 spark.sql.hive.metastore.jars。'

    我遇到了同样的问题,并使用 Java 8 修复了它。确保安装 JDK 8 并相应地设置环境变量。

    不要将 Java 11 与 Spark / pyspark 2.4 一起使用。

    【讨论】:

    • 在 Ubuntu 18.04 中设置 JAVA_HOME 没有帮助,但必须这样做 sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-8-openjdk-amd64/bin/java 10000
    • sudo update-alternatives --config java 并选择 java-8 对我有用
    【解决方案2】:

    如果您有多个 java 版本,则必须弄清楚使用的是哪个 spark(我通过反复试验来做到这一点,从

    JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
    

    并以

    结尾
    JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
    

    【讨论】:

    • 您可以通过“cd /usr/lib/jvm/”和使用“ls”查看所有已安装的java版本
    【解决方案3】:

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home

    成功了。

    【讨论】:

    • 在 osx mojave 上,对我来说是 export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home
    • 必须是 1.8 版吗?对/usr/local/Cellar/apache-spark/2.4.3/libexec/conf/spark-defaults.conf 有任何额外的调整吗?目前,我只有:spark-defaults.conf.tempplate ...如果我在远程服务器上有集群和 hive 数据库,我需要这个吗?
    【解决方案4】:

    如果你安装了多个 jdks,你可以找到下面的 java home

    /usr/libexec/java_home -V
    Matching Java Virtual Machines (3):
        13.0.2, x86_64: "OpenJDK 13.0.2"    /Library/Java/JavaVirtualMachines/adoptopenjdk-13.0.2.jdk/Contents/Home
        11.0.6, x86_64: "AdoptOpenJDK 11"   /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
        1.8.0_252, x86_64:  "AdoptOpenJDK 8"    /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
    

    现在将 JAVA_HOME 设置为 1.8 使用

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
    

    【讨论】:

      【解决方案5】:

      请确保您的 JAVA_HOME 环境变量已设置。 对于 Mac OS,我使用了 echo export JAVA_HOME=/Library/Java/Home &gt;&gt; ~/.bash_profile 然后 source ~/.bash_profile 或打开 ~/.bash_profile 输入上述内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-02
        相关资源
        最近更新 更多