我已经设置了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;
答案 0 :(得分:0)
Hive在 Hadoop之上元服务层,即HDFS / HBase 。
Hive不存储实际数据,实际数据存储在 HDFS或NoSQL 存储中,如HBase / Cassandra。
Hive是HDFS数据的表管理/关系视图。因此实际数据位于HDFS和元数据中,即数据库名称,表名,视图名称等。使用Hive Metastore存储在Hive中。
Hive数据库是HDFS中扩展名为.db的目录。所有数据库目录的位置都是HDFS中的仓库位置,即/ user / hive / warehouse(hive.metastore.warehouse.dir)。
因此我们使用Hive创建数据库,Hive在HDFS内部创建一个目录,并将此目录映射到Hive元数据中的数据库名称。