我已经建立了Apache Hive环境。
而且,我创建了一个名为cx的数据库,如下所示:
hive>create database cx;
OK
Time taken: 0.32 seconds
hive (default)> show databases;
OK
cx
default
Time taken: 0.032 seconds, Fetched: 2 row(s)
hive (default)>
当我使用“DESCRIBE DATABASE”命令检查数据库
cx
的详细信息时。我发现它的存储位于本地文件系统上:hive> describe database cx;
OK
cx file:/user/hive/warehouse/cx.db root USER
Time taken: 0.038 seconds, Fetched: 1 row(s)
我的问题是,如何在hdfs上存储此数据库?
这是我的hive-site.xml设置:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<description>location of default database for the warehouse</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby:;databaseName=/user/hive/warehouse/metastore_db;create=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
</configuration>
这是我的.hiverc文件:
set hive.cli.print.current.db=true;
set hive.exec.mode.local.auto=true;
最佳答案
Hive是 Hadoop(即HDFS / HBase )之上的 Meta Service层。
Hive不存储实际数据,实际数据存储在 HDFS或NoSQL 存储区(如HBase / Cassandra)中。
Hive是HDFS数据的表管理/关系 View 。因此实际数据位于HDFS和元数据中,即使用Hive Metastore将数据库名称,表名称, View 名称等存储在Hive中。
配置单元数据库是HDFS中扩展名为.db的目录。所有数据库目录的位置都是HDFS中的仓库位置,即/ user / hive / warehouse(hive.metastore.warehouse.dir)。
因此,我们使用Hive创建数据库,Hive在HDFS内部创建一个目录,并将此目录映射到Hive元数据中的数据库名称。
关于hadoop - 如何在HDFS上使用Hive?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38182567/