小智 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=bar您partition(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中描述了端口更改的完整列表
raj*_*ish 26
在Hive终端类型:
hive> set hive.metastore.warehouse.dir;
Run Code Online (Sandbox Code Playgroud)
(它将打印路径)
总结一下之前贴的几点,在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 下测试
| 归档时间: |
|
| 查看次数: |
126226 次 |
| 最近记录: |