Как запустить сервер Spark SQL JDBC / ODBC и pyspark одновременно? - PullRequest
0 голосов
/ 16 мая 2018

У меня есть одно развертывание Spark.Я использую сервер JDBC / ODBC на нем.Который работает отлично.Однако если я одновременно использую pyspark для сохранения таблицы (df.write.saveAsTable()), я получаю очень длинное сообщение об ошибке.Я думаю, что основная часть этого такова:

Caused by: ERROR XSDB6: Another instance of Derby may have already booted the database /root/spark/bin/metastore_db.

Проведя некоторые исследования, я обнаружил, что это вызвано тем, что Spark создает новый сеанс, который пытается создать еще один экземпляр Derby, который вызывает ошибку.Предлагаемое решение состоит в том, чтобы закрыть все другие процессы искровых оболочекОднако если я это сделаю, то сервер ODBC перестанет работать.

Что я могу сделать, чтобы оба работали одновременно?

1 Ответ

0 голосов
/ 17 мая 2018

Возможно, вы захотите использовать сетевой сервер derby вместо встроенной версии по умолчанию, чтобы он мог использоваться несколькими процессами.Или вы используете другое хранилище данных, такое как MySQL.

После установки сетевого сервера derby вы можете скопировать файл derby-client.jar в каталог spark jars, а затем отредактировать файл conf/hive-site.xml, например:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->
<configuration>
    <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:derby://localhost:1527/metastore_db;create=true</value>
      <description>JDBC connect string for a JDBC metastore</description>
    </property>

    <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>org.apache.derby.jdbc.ClientDriver</value>
      <description>Driver class name for a JDBC metastore</description>
    </property>
</configuration>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...