Hive在哪里存储HDFS中的文件?

Yuv*_*val 67 hadoop hive hdfs

我想知道如何找到Hive表与它们所代表的实际HDFS文件(或更确切地说,目录)之间的映射.我需要直接访问表文件.

Hive将文件存储在HDFS中的哪个位置?

小智 54

Hive表可能不一定存储在仓库中(因为您可以创建位于HDFS上任何位置的表).

你应该使用DESCRIBE FORMATTED <table_name>命令.

hive -S -e "describe formatted <table_name> ;" | grep 'Location' | awk '{ print $NF }'
Run Code Online (Sandbox Code Playgroud)

请注意,分区可能存储在不同的位置,以获取alpha=foo/beta=barpartition(alpha='foo',beta='bar')之后必须添加的分区的位置<table_name>.


Qui*_*nnG 53

一旦知道了要查看的位置,它们存储在HDFS上的位置就很容易识别出来.:)

如果你进入http://NAMENODE_MACHINE_NAME:50070/浏览器,它会带你到一个带Browse the filesystem链接的页面.

$HIVE_HOME/conf目录中有hive-default.xml和/或hive-site.xml具有hive.metastore.warehouse.dir属性.单击Browse the filesystem链接后,您将要导航到该值.

在我的,是的/usr/hive/warehouse.一旦我导航到那个位置,我就会看到桌子的名字.单击表名(只是一个文件夹)将显示表的分区.就我而言,我目前只对它进行了分区date.当我点击此级别的文件夹时,我将看到文件(更多分区将有更多级别).这些文件是数据实际存储在HDFS上的位置.

我没有尝试直接访问这些文件,我假设它可以完成.如果您正在考虑编辑它们,我会非常小心.:)对我来说 - 如果不直接访问磁盘上的Hive数据,我会找到一种方法来做我需要的工作.如果需要访问原始数据,可以使用Hive查询并将结果输出到文件.这些将具有完全相同的结构(列之间的分隔符,ect)作为文件HDFS.我总是这样查询并将它们转换为CSV.

有关如何将查询中的数据写入磁盘的部分是https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML#LanguageManualDML-Writingdataintothefilesystemfromqueries

UPDATE

从Hadoop 3.0.0 - Alpha 1开始,默认端口号发生了变化.NAMENODE_MACHINE_NAME:50070更改为NAMENODE_MACHINE_NAME:9870.如果您在Hadoop 3.x上运行,请使用后者.HDFS-9427中描述了端口更改的完整列表

  • 这个Metastore和hive使用的derby Metastore有什么区别? (3认同)

raj*_*ish 26

在Hive终端类型:

hive> set hive.metastore.warehouse.dir;
Run Code Online (Sandbox Code Playgroud)

(它将打印路径)


Tyr*_*son 6

show create table <table_name>在hive cli 中输入也很有可能为您提供蜂巢表的确切位置.


Jon*_*n L 5

总结一下之前贴的几点,在hive-site.xml中,属性hive.metastore.warehouse.dir指定了hadoop HDFS下的文件位置

<property>
   <name>hive.metastore.warehouse.dir</name>
   <value>/user/hive/warehouse</value>
</property>
Run Code Online (Sandbox Code Playgroud)

要查看文件,请使用以下命令:

hadoop fs -ls /user/hive/warehouse
Run Code Online (Sandbox Code Playgroud)

或者

http://localhost:50070
Utilities > Browse the file system
or
http://localhost:50070/explorer.html#/
Run Code Online (Sandbox Code Playgroud)

在 hadoop-2.7.3、hive-2.1.1 下测试