我在amazon emr上使用hive外部表。这些表通常是分区的,每个分区指向s3中不同的bucket。我正在使用mysql进行hive元数据存储。我希望能够看到s3上每个分区所指向的位置/bucket。我研究了mysql中的元数据表。我可以在那里看到分区信息,但是没有任何东西表明数据的实际位置。这些数据是在mysql中可用的,还是可以通过hive命令获得?
vbopmzt11#
如果要查看配置单元表的实际数据存储位置,可以使用多种方法。
hive> show create table <TableName>;
describe extended table_name
describe formatted table_name
ct2axkht2#
描述扩展表名称将向您提供有关表格的所有详细信息,包括(tablename:ca_data, dbname:suman, owner:suman,c级reatetime:1494368591,拉斯塔ccesstime:0, retention:0,sd:storagedescriptor(cols:)等。另一个命令:desc格式的表格名称;
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'
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'
5lwkijsr4#
正如h4ck3r所提到的,您可以使用“showcreatetable”命令来查找位置信息。要查看特定于分区的信息,请使用show table/partition extended:show table extended将列出与给定正则表达式匹配的所有表的信息。如果存在分区规范,则用户不能对表名使用正则表达式。此命令的输出包括基本表信息和文件系统信息,如totalnumberfiles、totalfilesize、maxfilesize、minfilesize、lastaccesstime和lastupdatetime。如果存在分区,它将输出给定分区的文件系统信息,而不是表的文件系统信息。
piok6c0g5#
以下配置单元命令可用于获取位置Hive> show create table <TableName>; 请在上述配置单元命令的输出中搜索行位置。
show create table <TableName>;
5条答案
按热度按时间vbopmzt11#
如果要查看配置单元表的实际数据存储位置,可以使用多种方法。
hive> show create table <TableName>;
它将为您提供具有实际数据所在路径的长表语法。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
谢谢,马赫什
ct2axkht2#
描述扩展表名称
将向您提供有关表格的所有详细信息,包括(tablename:ca_data, dbname:suman, owner:suman,c级reatetime:1494368591,拉斯塔ccesstime:0, retention:0,sd:storagedescriptor(cols:)等。
另一个命令:
desc格式的表格名称;
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'
5lwkijsr4#
正如h4ck3r所提到的,您可以使用“showcreatetable”命令来查找位置信息。
要查看特定于分区的信息,请使用show table/partition extended:
show table extended将列出与给定正则表达式匹配的所有表的信息。如果存在分区规范,则用户不能对表名使用正则表达式。此命令的输出包括基本表信息和文件系统信息,如totalnumberfiles、totalfilesize、maxfilesize、minfilesize、lastaccesstime和lastupdatetime。如果存在分区,它将输出给定分区的文件系统信息,而不是表的文件系统信息。
piok6c0g5#
以下配置单元命令可用于获取位置
Hive>
show create table <TableName>;
请在上述配置单元命令的输出中搜索行位置。