配置单元外部表-数据位置元数据存储在哪里?

dluptydi  于 2021-06-03  发布在  Hadoop
关注(0)|答案(5)|浏览(355)

我在amazon emr上使用hive外部表。这些表通常是分区的,每个分区指向s3中不同的bucket。我正在使用mysql进行hive元数据存储。
我希望能够看到s3上每个分区所指向的位置/bucket。我研究了mysql中的元数据表。我可以在那里看到分区信息,但是没有任何东西表明数据的实际位置。
这些数据是在mysql中可用的,还是可以通过hive命令获得?

vbopmzt1

vbopmzt11#

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

  1. hive> show create table <TableName>; 它将为您提供具有实际数据所在路径的长表语法。
  2. describe extended table_name 或者 describe formatted table_name . 它会给你的位置,所有者,评论,表类型等细节。
    3) 仅当您要检查单个表的位置时,上述格式才有帮助,但如果您要检查多个数据库中多个表的位置,则上述步骤没有帮助。
    因此,我们可以在这里配置单元元存储并通过一个查询获得多个表的位置。
    我看到一篇关于如何获取所有hive表的位置hdfs路径的很好的文章,请阅读。https://askdoubts.com/question/how-to-find-out-list-of-all-hive-external-tables-and-hdfs-paths-from-hive-metastore/#comment-19
    谢谢,马赫什
ct2axkht

ct2axkht2#

描述扩展表名称
将向您提供有关表格的所有详细信息,包括(tablename:ca_data, dbname:suman, owner:suman,c级reatetime:1494368591,拉斯塔ccesstime:0, retention:0,sd:storagedescriptor(cols:)等。
另一个命令:
desc格式的表格名称;

wsewodh2

wsewodh23#

对于外部分区表,每个分区都有一个位置,而不是表本身有一个位置。你需要使用类似 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'

5lwkijsr

5lwkijsr4#

正如h4ck3r所提到的,您可以使用“showcreatetable”命令来查找位置信息。
要查看特定于分区的信息,请使用show table/partition extended:
show table extended将列出与给定正则表达式匹配的所有表的信息。如果存在分区规范,则用户不能对表名使用正则表达式。此命令的输出包括基本表信息和文件系统信息,如totalnumberfiles、totalfilesize、maxfilesize、minfilesize、lastaccesstime和lastupdatetime。如果存在分区,它将输出给定分区的文件系统信息,而不是表的文件系统信息。

piok6c0g

piok6c0g5#

以下配置单元命令可用于获取位置
Hive> show create table <TableName>; 请在上述配置单元命令的输出中搜索行位置。

相关问题