Hive外部表 - 数据位置元数据存储在何处?

时间:2014-07-07 16:48:04

标签: mysql hadoop amazon-s3 hive emr

我在Amazon EMR上使用Hive外部表。这些表通常是分区的,每个分区指向S3中的不同存储桶。我正在使用MySQL进行Hive元数据存储。

我希望能够在S3上看到每个分区指向的位置/存储桶。我查看了MySQL中的元数据表。我可以在那里看到分区信息,但没有任何东西表明数据的实际位置。

这些数据在MySQL中是否可用,还是可以通过Hive命令获取?

5 个答案:

答案 0 :(得分:6)

以下配置单元命令可用于获取位置

蜂房&GT; show create table <TableName>;

请在上述配置单元命令的输出中搜索LOCATION行。

答案 1 :(得分:3)

对于外部分区表,每个分区都有一个位置,而不是具有位置的表本身。你需要使用像

这样的东西

show partitions employees

获取分区列表

describe extended employees partition (year='2016', month='05', day='25')

查看特定分区的位置。

show create table employees等其他命令可能无法提供有关数据位置的有用信息:

LOCATION 'hdfs://nameservice1/user/hive/warehouse/something.db/employees'

答案 2 :(得分:2)

描述扩展table_name 将为您提供有关表的所有详细信息,包括(tableName:ca_data,dbName:suman,owner:suman,createTime:1494368591,lastAccessTime:0,retention:0,sd:StorageDescriptor(cols :)等等。 另一个命令: desc格式化table_name;

答案 3 :(得分:0)

正如h4ck3r所提到的,您可以使用“显示创建表”命令来查找位置信息。

要查看分区特定信息,请使用Show Table/Partition Extended

  

SHOW TABLE EXTENDED将列出与给定正则表达式匹配的所有表的信息。如果存在分区规范,则用户不能对表名使用正则表达式。此命令的输出包括基本表信息和文件系统信息,如totalNumberFiles,totalFileSize,maxFileSize,minFileSize,lastAccessTime和lastUpdateTime。如果存在分区,它将输出给定分区的文件系统信息,而不是表的文件​​系统信息。

答案 4 :(得分:0)

如果要查看配置单元表的实际数据存储位置,可以使用多种方法。

1)hive> show create table <TableName>; 它将长期为您提供表语法以及实际数据位于path的位置。

2)describe extended table_namedescribe formatted table_name。 它将为您提供位置,所有者,注释,表类型等详细信息。

3)仅当您要检查单个表的位置时,上述格式才有帮助。但是,如果您要检查多个数据库中的多个表的位置,则上述步骤将无济于事。

因此,在这里我们可以配置元存储并通过单个查询获取多个表的位置。

我看了一篇非常好的文章,关于如何获取所有配置单元表HDFS路径的位置,请阅读。 https://askdoubts.com/question/how-to-find-out-list-of-all-hive-external-tables-and-hdfs-paths-from-hive-metastore/#comment-19

谢谢, 马赫什