Spark 2.1-ошибка при создании экземпляра HiveSessionState

при новой установке 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 на одной машине. Куст настроен, чтобы использовать MySQL в качестве хранилища метаданных. Я не получил эту ошибку с Spark 2.0.2.

может кто-то пожалуйста, мне точку в правильном направлении?

7 ответов


у меня была та же проблема. Некоторые ответы sudo chmod -R 777 /tmp/hive/, или понизить spark с hadoop до 2.6 не сработало для меня. Я понял, что причиной этой проблемы для меня является то, что я выполнял SQL-запросы с использованием sqlContext вместо использования sparkSession.

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

это прекрасно работает для меня сейчас.


Я получал ту же ошибку в среде windows, и ниже трюк работал для меня.

на shell.py сеанс spark определяется с помощью .enableHiveSupport()

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

удалить поддержку улья и переопределить сеанс spark, как показано ниже:

spark = SparkSession.builder\
        .getOrCreate()

вы можете найти shell.py в папке установки spark. для меня это в "C:\spark-2.1.1-bin-hadoop2.7\python\pyspark"

надеюсь, что это помогает


Spark 2.1.0-когда я запускаю его с опцией клиента yarn - я не вижу этой проблемы, но режим кластера yarn дает "ошибку при создании экземпляра" org.апаш.искра.язык SQL.улей.HiveSessionState':".

все еще ищу ответ.


проблема для меня была решена путем отключения HADOOP_CONF_DIR переменные среды. Он указывал на каталог конфигурации hadoop и при запуске pyspark shell, переменная вызвала Искра инициировать кластер hadoop, который не был инициирован.

Так что если у вас есть HADOOP_CONF_DIR переменная включена, затем вам нужно запустить кластер hadoop перед использованием Искра снаряды

или вам нужно чтобы отключить переменную.


вам не хватает банки с искровым ульем.

например, если вы работаете на Scala 2.11, с Spark 2.1, вы можете использовать эту банку.

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


Я видел эту ошибку на новом (2018) Mac, который пришел с Java 10. Исправить было установить JAVA_HOME на Java 8:

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


Я тоже боролся в кластерном режиме. Добавлен улей-сайт.xml из каталога sparkconf, если у вас есть кластер hdp, то он должен быть в /usr/hdp/current/spark2-client / conf. Это работает на меня.