Hive:为什么在我的项目文件夹中创建了metastore_db?

时间:2017-08-08 10:35:56

标签: mysql hadoop hive apache-spark-sql

我已将hive-site.xml放入我的spark/conf目录并将其配置为连接到thrift://<user>:9083而我没有使用derby我在hive / mysql-connector-jar内lib文件夹,仍然每次创建hive表和存储数据时,所有数据都存储在我的项目目录中的metastore_db而不是hdfs://<user>:9000/user/hive/warehouse中,所以如果我删除了metastore_db数据就会丢失。 conf/hive-site.xml

<property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://saurab:3306/metastore_db?
        createDatabaseIfNotExist=true</value>
        <description>metadata is stored in a MySQL server</description>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
        <description>MySQL JDBC driver class</description>
    </property>

    <property>
        <name>hive.aux.jars.path</name>
        <value>/home/saurab/hadoopec/hive/lib/hive-serde-
       2.1.1.jar</value>
    </property>

    <property>
        <name>spark.sql.warehouse.dir</name>
        <value>hdfs://saurab:9000/user/hive/warehouse</value>
    </property>

    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://saurab:9083</value>
        <description>URI for client to contact metastore 
        server</description>
    </property>

This是我的thriftserver log.Mysql服务器正在运行。所以为什么它仍在创建metastore_db并在那里存储数据。

1 个答案:

答案 0 :(得分:0)

我会说你已经在Spark conf文件夹上进行了这些更改,但是没有在服务器上进行(至少不是全部)。 请注意服务器日志: &#34; metastore.MetaStoreDirectSql:使用直接SQL,底层数据库是DERBY&#34;

通常的做法是在spark / conf下复制配置而不是从那里添加一个链接到/etc/hive/conf/hive-site.xml,以确保客户端和服务器使用相同的配置。

我的建议是首先正确设置服务器端(你也有端口冲突),用beeline测试它,只有他们从Spark开始使用它