前言
开发中可能用到hive的元数据信息 ,如获取hive表列表、hive表字段、hive表数据量大小、hive表文件大小等信息,要想获取hive元数据信息即需要hive元数据库的账号及密码,此次提供的是一种不需要hive元数据库密码及可获取元数据信息的方式,且此种方式是只读
组件:hive 3.1.2
分析
首先hive 的配置文件里是存有元数据库的账号和密码的,只不过一般情况密码是加密的,
要想读取元数据库的数据就一定需要密码,要想免密取数据,则可以看看hive本身是否有类似支持的接口,免密只是对于我们免密,最终还是要使用密码
查看hive 源码发现 jdbc-handler 组件 此组件可以支持如下方式创建hive jdbc表
步骤
以 获取hive元数据的表列表为例子
1. 在Hive上创建Table表,表数据取得是Hive元数据的表列表
CREATE EXTERNAL TABLE IF NOT EXISTS `TBLS` (
`TBL_ID` bigint,
`CREATE_TIME` int,
`DB_ID` bigint,
`LAST_ACCESS_TIME` int,
`OWNER` string,
`RETENTION` int,
`SD_ID` bigint,
`TBL_NAME` string,
`TBL_TYPE` string,
`VIEW_EXPANDED_TEXT` string,
`VIEW_ORIGINAL_TEXT` string,
`IS_REWRITE_ENABLED` boolean,
CONSTRAINT `SYS_PK_TBLS` PRIMARY KEY (`TBL_ID`) DISABLE
)
STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler'
TBLPROPERTIES (
"hive.sql.database.type" = "METASTORE",
"hive.sql.query" =
"SELECT
\"TBL_ID\",
\"CREATE_TIME\",
\"DB_ID\",
\"LAST_ACCESS_TIME\",
\"OWNER\",
\"RETENTION\",
\"SD_ID\",
\"TBL_NAME\",
\"TBL_TYPE\",
\"VIEW_EXPANDED_TEXT\",
\"VIEW_ORIGINAL_TEXT\",
\"IS_REWRITE_ENABLED\"
FROM \"TBLS\""
);
2. 查看表的数据
查询该hive表 TBLS 中的数据 即是查询hive元数据库中 TBLS表的数据
3. 服务应用中可以通过hive jdbc连接方式查询hive表的数据或把hive表数据定时导入db中
精彩内容
发表评论