Приведенный ниже запрос при запуске в 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
Надеюсь, это поможет!