Сборка Spark в улье Метасторское хранилище MySQL не используется
Я использую Apache Spark 2.1.1 и поставил следующий файл hive-site.xml на $SPARK_HOME/conf
папка:
<?xml version="1.0"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://mysql_server:3306/hive_metastore?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>password</value>
<description>password to use against metastore database</description>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
<description>password to use against metastore database</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>${test.tmp.dir}/hadoop-tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://hadoop_namenode:9000/value_iq/hive_warehouse/</value>
<description>Warehouse Location</description>
</property>
</configuration>
Когда я запускаю Thrift-сервер, схема метастазирования создается в моей базе данных MySQL, но не используется, вместо этого используется Derby.
Не удалось найти ошибку в файле журнала Thrift-сервера, единственное, что вызывает мое внимание, это то, что он сначала пытается использовать MySQL (INFO MetaStoreDirectSql: Using direct SQL, underlying DB is MYSQL
) но тогда безо всякой ошибки используйте вместо него Derby (INFO MetaStoreDirectSql: Using direct SQL, underlying DB is DERBY
). Это журнал экономичного сервера https://www.dropbox.com/s/rxfwgjm9bdccaju/spark-root-org.apache.spark.sql.hive.thriftserver.HiveThriftServer2-1-s-master.value-iq.com.out?dl=0 дома ? дл = 0
У меня не установлен куст в моей системе, я просто притворяюсь, что использую встроенный Hive Apache Spark.
я использую mysql-connector-java-5.1.23-bin.jar
который расположен на $SPARK_HOME/jars
папка.
1 ответ
Как видно из hive-site.xml, вы не настроили службу метастазов для подключения. Таким образом, спарк будет использовать по умолчанию локальный сервис метастазов с базой данных Derby DB.
Я приказываю использовать сервис Metastore, который имеет MySQL DB в качестве бэкэнда, вы должны:
Запустите службу метастазов. Вы можете посмотреть здесь, как запустить руководство администратора службы Hive metastore. Вы запускаете службу метастазов с помощью серверной части базы данных MySQL, используя тот же файл hive-site.xml, и добавляете следующие строки для запуска службы метастазов на METASTORESERVER через порт XXXX:
<property> <name>hive.metastore.uris</name> <value>thrift://METASTRESERVER:XXXX</value> </property>
Пусть spark знает, где запущена служба метастазов. Это можно сделать, используя тот же файл hive-site.xml, который вы использовали при запуске службы metastore (с добавлением к нему строк выше), скопируйте этот файл в путь конфигурации Spark, а затем перезапустите сервер Spark Thrift.