hive查询固定前缀开头的表名
时间: 2023-08-12 17:07:44 浏览: 273
可以使用 `SHOW TABLES` 命令来列出当前hive库中的所有表名,然后使用 `LIKE` 关键字过滤出以指定前缀开头的表名。具体的语句如下:
```
SHOW TABLES LIKE 'prefix*';
```
其中,`prefix` 为指定的前缀, `*` 为通配符,表示匹配任意字符。这条语句会列出所有以 `prefix` 开头的表名。
相关问题
hive修改表名hdfs上表名没变
当你使用 Hive 修改表名时,实际上只是修改了 Hive 的元数据,而并没有修改 HDFS 上的表名。所以在 HDFS 上表名并没有变化。
如果你想要修改 HDFS 上的表名,可以通过以下步骤实现:
1. 使用 Hive 命令 `DESCRIBE FORMATTED <table-name>` 查看表的详细信息,其中 Location 字段显示了表在 HDFS 上的存储位置。
2. 关闭 Hive,使用 Hadoop 命令 `hadoop fs -mv <old-table-location> <new-table-location>` 将表在 HDFS 上的存储位置重命名。
3. 重新启动 Hive,使用 `ALTER TABLE <old-table-name> RENAME TO <new-table-name>` 命令将 Hive 元数据中的表名修改为新的表名。
这样就完成了 Hive 表名和 HDFS 上表名的修改。
使用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`)。