【问题标题】:Hive External Table - Where is data location meta data stored?Hive 外部表 - 数据位置元数据存储在哪里?
【发布时间】:2014-07-07 16:48:04
【问题描述】:

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

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

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

【问题讨论】:

    标签: mysql hadoop amazon-s3 hive emr


    【解决方案1】:

    下面的hive命令可以用来获取位置

    蜂巢>show create table <TableName>;

    请在上述 hive 命令的输出中搜索 LOCATION 行。

    【讨论】:

    • 这个命令显示了表使用的顶级分区。但是我有多个分区级别,我想查看最低级别分区的位置。此外,我的一些表指向 HDFS 中的 S3 存储桶和目录。 show create table 只显示 HDFS 目录。
    【解决方案2】:

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

    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'

    【讨论】:

    • 注意:这是一个正确的答案。我有一个表位置和分区位置不同的情况。我很困惑我可以在Hive中查询数据,但是show create table提供的S3位置没有任何数据。 describe extended employees partition让我在正确的轨道上找到数据。
    【解决方案3】:

    描述扩展表名

    将为您提供有关表的所有详细信息,包括(tableName:ca_data、dbName:suman、owner:suman、createTime:1494368591、lastAccessTime:0、retention:0、sd:StorageDescriptor(cols:) 等等。

    p>

    另一个命令:

    desc 格式化的表名;

    【讨论】:

      【解决方案4】:

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

      1) hive> show create table <TableName>; 它将为您提供表格语法,其中包含实际数据所在的路径。

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

      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

      谢谢, 马赫什

      【讨论】:

        【解决方案5】:

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

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

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

        【讨论】:

        • 这看起来确实让我走上了正轨。 show table extended 当我没有指定分区时,会出现堆空间错误。当分区指向 HDFS 时,在特定分区上使用此命令似乎有效,但是当它指向 S3 时,我收到类似 FAILED: Error in metadata: java.lang.IllegalArgumentException: This file system object (hdfs://.….) does not support access to the request path 's3n://....' You possibly called FileSystem.get(conf) when you should have called FileSystem.get(uri, conf) to obtain a file system supporting your path. 的错误
        猜你喜欢
        • 1970-01-01
        • 2015-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-02
        • 2012-04-21
        • 1970-01-01
        相关资源
        最近更新 更多