Spark 2.1 - 实例化HiveSessionState时出错

时间:2017-03-22 04:11:38

标签: apache-spark

完全安装Spark 2.1后,执行pyspark命令时出错。

Traceback (most recent call last):
File "/usr/local/spark/python/pyspark/shell.py", line 43, in <module>
spark = SparkSession.builder\
File "/usr/local/spark/python/pyspark/sql/session.py", line 179, in getOrCreate
session._jsparkSession.sessionState().conf().setConfString(key, value)
File "/usr/local/spark/python/lib/py4j-0.10.4-src.zip/py4j/java_gateway.py", line 1133, in __call__
File "/usr/local/spark/python/pyspark/sql/utils.py", line 79, in deco
raise IllegalArgumentException(s.split(': ', 1)[1], stackTrace)
pyspark.sql.utils.IllegalArgumentException: u"Error while instantiating 'org.apache.spark.sql.hive.HiveSessionState':"

我在同一台机器上安装了Hadoop和Hive。 Hive配置为使用MySQL进行Metastore。我没有在Spark 2.0.2中得到这个错误。

有人可以指出我正确的方向吗?

10 个答案:

答案 0 :(得分:17)

我在Windows环境中遇到同样的错误,而且下面的技巧对我有效。

shell.py中,火花会话定义为.enableHiveSupport()

 spark = SparkSession.builder\
            .enableHiveSupport()\
            .getOrCreate()

删除hive支持并重新定义spark会话,如下所示:

spark = SparkSession.builder\
        .getOrCreate()

您可以在spark安装文件夹中找到shell.py。 对我来说,它在"C:\spark-2.1.1-bin-hadoop2.7\python\pyspark"

希望这有帮助

答案 1 :(得分:7)

我遇到了同样的问题。一些答案sudo chmod -R 777 /tmp/hive/,或用hadoop降级到2.6的火花并没有对我有用。 我意识到导致这个问题的原因是我使用sqlContext而不是使用sparkSession进行SQL查询。

sparkSession =SparkSession.builder.master("local[*]").appName("appName").config("spark.sql.warehouse.dir", "./spark-warehouse").getOrCreate()
sqlCtx.registerDataFrameAsTable(..)
df = sparkSession.sql("SELECT ...")

这对我现在非常有用。

答案 2 :(得分:3)

Spark 2.1.0 - 当我使用yarn client选项运行它时 - 我没有看到这个问题,但是纱线群集模式在实例化'org.apache.spark.sql.hive.HiveSessionState'时出现“错误:”。

仍在寻找答案。

答案 3 :(得分:1)

通过禁用 HADOOP_CONF_DIR 环境变量解决了我的问题。它指向 hadoop配置目录并且在启动pyspark shell时,该变量导致 spark 启动未启动的hadoop集群。

因此,如果您启用了 HADOOP_CONF_DIR 变量,则必须在使用 spark shell之前启动hadoop集群

或者你需要禁用变量。

答案 4 :(得分:0)

你错过了火花蜂巢罐。

例如,如果您使用Spark 2.1在Scala 2.11上运行,则可以使用此jar。

https://mvnrepository.com/artifact/org.apache.spark/spark-hive_2.11/2.1.0

答案 5 :(得分:0)

我在Java 10随附的新的(2018)Mac上看到此错误,修复是将JAVA_HOME设置为Java 8:

export JAVA_HOME=`usr/libexec/java_home -v 1.8`

答案 6 :(得分:0)

我也在集群模式下苦苦挣扎。从sparkconf目录中添加了hive-site.xml,如果您具有hdp集群,则它应位于/ usr / hdp / current / spark2-client / conf。它对我有用。

答案 7 :(得分:0)

当我的HDFS尚未启动时,尝试运行pyspark和spark-shell时出现此错误。

答案 8 :(得分:0)

我已经从shell.py文件中删除了“ .enableHiveSupport()\”并使其正常运行

/ *****在********之前/ spark = SparkSession.builder \ .enableHiveSupport()\ .getOrCreate()

/ *************之后

spark = SparkSession.builder \ .getOrCreate()

/ ************************* /

答案 9 :(得分:0)

将出现项目位置和文件许可权。尽管我对pom文件进行了更改,但仍观察到了此错误。然后,我将项目目录更改为拥有完全许可权的用户目录,这解决了我的问题。