【问题标题】:Hive -where are tables information storedHive - 存储表信息的位置
【发布时间】:2016-11-23 09:04:15
【问题描述】:

我在 HIVE 中创建和插入表,这些文件是在 HDFS 上创建的,有些是在外部存储 S3 上创建的

假设如果我创建了 10 个表,那么 Hive 中是否有任何系统表可以找到用户创建的表信息??? (例如,在 Teradata 中,我们有 DBC.tablesv,其中包含所有用户定义表的信息)

【问题讨论】:

  • 我确实发现“Hive 表和分区的所有元数据都通过 Hive Metastore 访问。元数据使用 JPOX ORM 解决方案(Data Nucleus)持久化,因此可以使用它支持的任何数据库by Hive。支持大部分商业关系数据库和许多开源数据库”还有其他方法吗?????

标签: hive


【解决方案1】:

您可以在 hive-site.xml 文件中找到 Metastore 的配置位置。
它通常的位置在 /etc/hive/{$hadoop_version}/ 或 /etc/hive/conf/ 下。
grep 查找“hive.metastore.uris”或“javax.jdo.option.ConnectionURL”以查看您将哪个数据库用于元存储。凭据也应该在那里。
例如,如果您的元存储在 MySQL 服务器上,您可以运行类似
SELECT * FROM TBLS;
SELECT * FROM PARTITIONS;
的查询 等等

【讨论】:

    【解决方案2】:

    您无法从 Hive 中查询(如在 SELECT ... FROM... 中)元数据。
    但是,您确实有显示该信息的命令,例如show databasesshow tablesdesc MyTable

    【讨论】:

      【解决方案3】:

      我不确定我是否 100% 理解您的问题,如果您的意思是有关创建表的信息,例如查询本身、HDFS 上的位置、表属性等,您可以尝试:

      SHOW CREATE TABLE <table>;
      

      如果您需要检索列名和数据类型的列表,请尝试:

      DESCRIBE <table>;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-17
        • 1970-01-01
        • 2021-04-01
        • 1970-01-01
        • 2015-01-14
        相关资源
        最近更新 更多