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

Posted

技术标签:

【中文标题】Hive:为啥在我的项目文件夹中创建 metastore_db?【英文标题】:Hive : why is metastore_db created in my project folder?Hive:为什么在我的项目文件夹中创建 metastore_db? 【发布时间】:2017-08-08 10:35:56 【问题描述】:

我已将hive-site.xml 放在我的spark/conf 目录中,并将其配置为连接到thrift://<user>:9083,但我没有使用derby 我在hive/lib 文件夹中有mysql-connector-jar,仍然每次我创建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 日志。Mysql 服务器正在运行。那么为什么它仍在创建 metastore_db 并在那里存储数据。

【问题讨论】:

【参考方案1】:

我会说您已经在 Spark conf 文件夹上进行了这些更改,但没有在服务器一上进行(至少不是全部)。 服务器日志注意事项: 《metastore.MetaStoreDirectSql:使用直接SQL,底层DB是DERBY》

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

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

【讨论】:

所以我应该将 /hive/conf/ 添加到 $SPARK_CLASSPATH 吗?这会好吗 另外,我想知道 spark 是否真的读取 /hive/conf/hive-site.xml。不是只读/spark/conf/hive-site.xml吗? pastebin.com/Lr8QJJRP 这是hive/conf/hive-site.xml。我还错过了什么? 默认情况下,spark/conf 被添加到类路径中,更容易将链接放在那里而不是弄乱 Spark 类路径。原则上配置看起来是正确的,您在进行这些更改后是否重新启动了服务器? “端口已在使用”错误可能表示正在运行的服务器过时 thrift 日志来自 HiveServer2,因为您正在设置“hive.metastore.uris”,这意味着您正在运行一个单独的 Metastore 服务器。您确定它在配置更改后重新启动了吗?

以上是关于Hive:为啥在我的项目文件夹中创建 metastore_db?的主要内容,如果未能解决你的问题,请参考以下文章

发现为啥在我的 C++ 应用程序中创建线程及其作用的最佳方法是啥?

为啥我的符号链接没有链接,而是在我试图链接的目录中创建一个文件

如何在我的gradle项目中创建单个可执行的jar?

从单个 csv 文件在 Hadoop Hive 中创建星型模式(维度和事实表)

创建 NSManagedObject 子类...在我的项目中创建一个新错误

如何在我的项目中创建第二个目标来为 iOS 创建一个预填充的数据库