Как узнать общий размер базы данных Hive - PullRequest
1 голос
/ 03 мая 2019

У меня есть база данных с 10 таблицами. Все 10 таблиц данных хранятся в разных местах. из 10 таблиц некоторые являются управляемыми, а некоторые - внешними.

расположение некоторых таблиц: / apps / hive / warehouse /

расположение некоторых таблиц / склад / улей / управляемый /

расположение некоторых столов / склад / улей / внешний /

есть ли способ узнать общий размер базы данных, не заходя в каждое местоположение и найти размер, какой-либо альтернативный вариант?

1 Ответ

1 голос
/ 03 мая 2019

Приведенный ниже запрос при запуске в Hive Metastore DB поможет вам получить общий размер, занимаемый всеми таблицами в Hive. Примечание : результаты, полученные для этого запроса, будут на 100% правильными, только если статистика всех таблиц будет обновлена.[Это можно проверить в таблице - TABLE_PARAMS в БД Metastore, о которой я также упомянул ниже (как это работает? .B)]

Шаги:

1. Войдите в Hive Metastore DB и используйте базу данных, которая используется Hive.hive1 по умолчанию.

2. После этого вы можете выполнить приведенный ниже запрос, чтобы получить общий размер всех таблиц в Hive в байтах.Запрос принимает сумму общего размера всех таблиц Hive на основе статистики таблиц.

    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 x ​​3 - это фактический размер в HDFS, включая репликацию.

Как это работает?

a.Выбор случайной таблицы в Hive с идентификатором 5783 и именем - test12345 из таблицы TBLS в Hive Metastore DB.

    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 для той же таблицы Hive с идентификатором - 5783. Запись totalSize указывает общий размер, занимаемый этой таблицей в HDFS для одной из ее реплик.Следующая точка (c), которая является hdfs du -s, может быть сравнена, чтобы проверить это.

Параметр COLUMN_STATS_ACCURATE со значением true говорит, что свойство статистики таблицы установлено в значение true.Вы можете проверить таблицы с таким значением как false, чтобы увидеть, есть ли в Hive таблицы, в которых может отсутствовать статистика.

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 du -s вывод той же таблицы из HDFS.324 и 972 - это размеры одной и трех реплик данных таблицы в HDFS.

324  972  /user/hive/warehouse/test12345

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...