前言

开发中可能用到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中

精彩内容

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: