统计hive库多表数据量
时间: 2023-06-03 14:01:41 浏览: 245
可以提供一个查询语句来获取每个表的数据量和总数据量:
```
SELECT
CONCAT(tab.database_name, '.', tab.table_name) AS 'table',
COUNT(*) AS 'rows'
FROM
(SELECT
t.*,
ROW_NUMBER() OVER (
PARTITION BY t.table_name
ORDER BY t.table_name
) AS rank
FROM
(
SELECT
table_name,
database_name
FROM
information_schema.tables
WHERE
table_type = 'BASE TABLE'
AND table_schema = 'your_hive_database'
) t
) tab
GROUP BY
tab.database_name,
tab.table_name
ORDER BY
tab.database_name,
tab.table_name;
```
请将 "your_hive_database" 替换为你要查询的 Hive 数据库名称。
相关问题
如何最快的统计hive中某个库下所有表的数据量
要统计 Hive 中某个库下所有表的数据量,可以使用以下 SQL 语句:
```
SELECT table_name, tbl_rows
FROM (
SELECT tbl_name AS table_name,
SUM(totalRows) AS tbl_rows
FROM (
SELECT tbl_name, input_file_block_length AS totalRows
FROM hive_metastore.`TBLS` t
JOIN hive_metastore.`DBS` d ON t.`DB_ID` = d.`DB_ID`
JOIN hive_metastore.`SDS` s ON t.`SD_ID` = s.`SD_ID`
JOIN hive_metastore.`BUCKETING_COLS` b ON t.`TBL_ID` = b.`TBL_ID`
WHERE d.`NAME` = 'your_database_name'
) subq1
GROUP BY tbl_name
) subq2
```
这个 SQL 语句和之前的 SQL 语句基本相同,只是将查询条件中的数据库名替换为了实际的数据库名,这样就可以统计该库下所有表的数据量了。这个 SQL 语句的执行速度取决于 Hive 元数据的大小和表的数量。如果库中包含的表比较多,那么可以考虑使用并行查询或者分批查询来加快查询速度。
使用sparlsql 统计hive中fdp库下表名开头为db_的表数据量
您可以使用如下的 SQL 语句来统计 Hive 中 FDP 数据库中表名开头为 db_ 的表的数据量:
```
SELECT table_name, tbl_rows
FROM (
SELECT tbl_name AS table_name,
SUM(totalRows) AS tbl_rows
FROM (
SELECT tbl_name, input_file_block_length AS totalRows
FROM hive_metastore.`TBLS` t
JOIN hive_metastore.`DBS` d ON t.`DB_ID` = d.`DB_ID`
JOIN hive_metastore.`SDS` s ON t.`SD_ID` = s.`SD_ID`
JOIN hive_metastore.`BUCKETING_COLS` b ON t.`TBL_ID` = b.`TBL_ID`
WHERE d.`NAME` = 'fdp'
AND tbl_name LIKE 'db_%'
) subq1
GROUP BY tbl_name
) subq2
```
其中,`hive_metastore` 是 Hive 中用于存储元数据的数据库,包含了 Hive 中所有的表、分区、列等信息。`TBLS` 表、`DBS` 表、`SDS` 表和 `BUCKETING_COLS` 表则分别存储了表的基本信息、数据库的基本信息、表的存储信息和表的分桶信息。通过这些表,我们可以查询到 FDP 数据库中所有表的信息。
具体地,上述 SQL 语句中,我们首先查询到 FDP 数据库中所有表名开头为 db_ 的表的文件大小(即 `input_file_block_length`),然后将它们汇总到每个表上,最后得到每个表的总数据量(即 `tbl_rows`)。