首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找出蜂巢数据库的总体大小

如何找出蜂巢数据库的总体大小
EN

Stack Overflow用户
提问于 2019-05-03 05:04:38
回答 1查看 2.7K关注 0票数 1

我有一个有10张桌子的数据库。所有10个表数据都存储在不同的位置。在10个表中,有些是托管表,有些是外部表。

一些表的位置是/app/hive/仓库/

一些表的位置是/仓库/单元/托管/

一些表的位置是/仓库/单元/外部/

是否有任何方法可以找出数据库的总大小,不让out进入每个位置,并找到大小,任何选择?

EN

回答 1

Stack Overflow用户

发布于 2019-05-03 13:38:50

当在中运行时,下面的查询将帮助您获得Hive中所有表占用的总大小。备注:只有当所有表都更新其统计数据时,此查询的结果才是100%正确的。这可以在下面提到的表-- Metastore DB中的TABLE_PARAMS中进行检查(它是如何工作的?.b)

步骤:

1.将登录到hive中,并使用Hive使用的数据库。默认情况下是hive1

2.完成后,您可以执行下面的查询,以获得所有Hive表的总大小(以字节为单位)。该查询根据表的统计信息获取所有Hive表的总大小之和。

代码语言:javascript
复制
    MariaDB [hive1]> SELECT SUM(PARAM_VALUE) FROM TABLE_PARAMS WHERE PARAM_KEY="totalSize";
    +------------------+
    | SUM(PARAM_VALUE) |
    +------------------+
    |   30376289388684 |
    +------------------+
    1 row in set (0.00 sec)```

3.记住,上面导出的结果仅用于一个复制。30376289388684 x3是HDFS中的实际大小,包括复制。

它是如何工作的?

a.从中的TBLS表中选择一个id 5783和name - test12345的随机表。

代码语言:javascript
复制
    MariaDB [hive1]> SELECT * FROM TBLS WHERE TBL_ID=5783;
    +--------+-------------+-------+------------------+-------+-----------+-------+-----------+---------------+--------------------+--------------------+----------------+
    | TBL_ID | CREATE_TIME | DB_ID | LAST_ACCESS_TIME | OWNER | RETENTION | SD_ID | TBL_NAME  | TBL_TYPE      | VIEW_EXPANDED_TEXT | VIEW_ORIGINAL_TEXT | LINK_TARGET_ID |
    +--------+-------------+-------+------------------+-------+-----------+-------+-----------+---------------+--------------------+--------------------+----------------+
    |   5783 |  1555060992 |     1 |                0 | hive  |         0 | 17249 | test12345 | MANAGED_TABLE | NULL               | NULL               |           NULL |
    +--------+-------------+-------+------------------+-------+-----------+-------+-----------+---------------+--------------------+--------------------+----------------+
    1 row in set (0.00 sec)

b.检查Hive Metastore表- TABLE_PARAMS中与id - 5783相同的表格中表的不同参数。totalSize记录表示该表在HDFS中为其副本之一占用的总大小。下一点(c),即hdfs -s,可以进行比较以检查这一点。

值为true的param true表示表的statistics属性设置为true。您可以以false的形式检查具有此值的表,以查看Hive中是否有可能缺少统计信息的表。

代码语言:javascript
复制
MariaDB [hive1]> SELECT * FROM TABLE_PARAMS
    -> WHERE TBL_ID=5783;
+--------+-----------------------+-------------+
| TBL_ID | PARAM_KEY             | PARAM_VALUE |
+--------+-----------------------+-------------+
|   5783 | COLUMN_STATS_ACCURATE | true        |
|   5783 | numFiles              | 1           |
|   5783 | numRows               | 1           |
|   5783 | rawDataSize           | 2           |
|   5783 | totalSize             | 324         |
|   5783 | transient_lastDdlTime | 1555061027  |
+--------+-----------------------+-------------+
6 rows in set (0.00 sec)

c.来自HDFS的同一表的hdfs du -s输出。324和972是HDFS中表数据的一个副本和三个副本的大小。

代码语言:javascript
复制
324  972  /user/hive/warehouse/test12345

希望这能有所帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55963580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档