Spark SQL не может получить доступ к Spark Thrift Server - PullRequest
0 голосов
/ 14 января 2019

Я не могу настроить Spark SQL так, чтобы я мог получить доступ к Hive Table в Spark Thrift Server (без использования JDBC, но изначально из Spark)

Я использую один файл конфигурации conf/hive-site.xml для Spark Thrift Server и Spark SQL. У меня javax.jdo.option.ConnectionURL свойство установлено на jdbc:derby:;databaseName=/home/user/spark-2.4.0-bin-hadoop2.7/metastore_db;create=true. Я также установил для свойства spark.sql.warehouse.dir абсолютный путь, указывающий на каталог spark-warehouse. Я запускаю сервер Thrift с ./start-thriftserver.sh и вижу, что встроенная база данных Derby создается с каталогом metastore_db. Я могу соединиться с beeline, создать таблицу и посмотреть каталог spark-warehouse, созданный с подкаталогом для таблицы. Так что на данном этапе все в порядке.

Я запускаю оболочку pyspark с включенной поддержкой Hive ./bin/pyspark --conf spark.sql.catalogImplementation=hive и пытаюсь получить доступ к таблице Hive с помощью:

from pyspark.sql import HiveContext
hc = HiveContext(sc)
hc.sql('show tables')

Я получил такие ошибки, как:

ОШИБКА XJ040: Не удалось запустить базу данных '/home/user/spark-2.4.0-bin-hadoop2.7/metastore_db' с загрузчиком классов sun.misc.Launcher$AppClassLoader@1b4fb997

ОШИБКА XSDB6: Возможно, другой экземпляр Derby уже загрузил база данных /home/user/spark-2.4.0-bin-hadoop2.7/metastore_db

pyspark.sql.utils.AnalysisException: u'java.lang.RuntimeException: java.lang.RuntimeException: невозможно создать экземпляр org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient;

Очевидно, Spark пытается создать новую базу данных Derby вместо использования Metastore, который я поместил в файл конфигурации. Если я останавливаю Thrift Server и запускаю только спарк, все нормально. Как я мог это исправить?

Хорошо ли встроенная база данных Derby Metastore, чтобы Thrift Server и Spark имели доступ к одному Hive, или мне нужно использовать, например, MySQL? У меня нет кластера, и я делаю все локально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...