未使用配置单元mysql元存储中的spark build

yyhrrdl8  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(410)

我使用的是ApacheSpark2.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服务器时,metastore模式是在mysql数据库上创建的,但是没有使用,而是使用derby。
在thrift服务器日志文件中找不到任何错误,唯一引起我注意的是它首先尝试使用mysql( INFO MetaStoreDirectSql: Using direct SQL, underlying DB is MYSQL )但是,如果没有任何错误,请使用derby( INFO MetaStoreDirectSql: Using direct SQL, underlying DB is DERBY ). 这是thrift服务器日志https://www.dropbox.com/s/rxfwgjm9bdccaju/spark-root-org.apache.spark.sql.hive.thriftserver.hivethriftserver2-1-s-master.value-iq.com.out?dl=0
我的系统上没有安装hive,我只是假装使用apachespark的内置hive。
我在用 mysql-connector-java-5.1.23-bin.jar 位于 $SPARK_HOME/jars 文件夹。

nafvub8i

nafvub8i1#

正如hive-site.xml中显示的那样,您尚未设置要连接的元存储服务。因此spark将使用默认的服务,即带有derbydb后端的本地metastore服务
我要使用以mysql db为后端的metastore服务,您必须:
启动metastore服务。您可以在这里看看如何启动服务配置单元元存储管理手册。您可以使用相同的hive-site.xml从mysql db的后端启动metastore服务,并添加以下行以在端口x上的metastoreserver上启动metastore服务:

<property>
  <name>hive.metastore.uris</name>
  <value>thrift://METASTRESERVER:XXXX</value>
</property>

让spark知道metastore服务是从哪里开始的。这可以通过使用启动metastore服务时使用的相同hive-site.xml来完成(添加上面的行)将此文件复制到spark的配置路径中,然后重新启动spark thrift服务器

相关问题