完全安装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中得到这个错误。
有人可以指出我正确的方向吗?
答案 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文件进行了更改,但仍观察到了此错误。然后,我将项目目录更改为拥有完全许可权的用户目录,这解决了我的问题。