hive metadata管理_Hive学习笔记——metadata

本文介绍了如何通过Hive的JDBC接口获取表的元信息,包括使用getMetaData方法、getTables和getColumns等接口,以及Hive元数据在TBLS和TABLE_PARAMS表中的存储。同时讨论了ANALYZE TABLE命令在统计分区信息中的作用,并解释了HiveMetaStoreClient的dropPartition方法及其对内部表和外部表的影响。

Hive结构体系

https://blog.youkuaiyun.com/zhoudaxia/article/details/8855937

可以在hive的jdbc接口中使用getMetaData方法来获取hive表的相关元信息

statement = connection.createStatement();

DatabaseMetaData meta = connection.getMetaData();

参考

https://blog.youkuaiyun.com/u010368839/article/details/76358831

hive metadata源码解析可以参考

https://cloud.tencent.com/developer/article/1330250

hive thrift接口可以参考

注意代码中的hive-site.xml和集群上面的保持一致

否则会报错,例如

set_ugi() not successful, Likely cause: new client talking to old server. Continuing without it.

获得表的信息接口,指定tableNamePattern为hive表名

ResultSet tableRet = meta.getTables(null, "%", "ads_nsh_trade", new String[]{"TABLE"});

while (tableRet.next()) {

System.out.println("TABLE_CAT:" + tableRet.getString("TABLE_CAT"));

System.out.println("TABLE_SCHEM:" + tableRet.getString("TABLE_SCHEM"));

System.out.println("TABLE_NAME => " + tableRet.getString("TABLE_NAME"));

System.out.println("table_type => " + tableRet.getString("table_type"));

System.out.println("remarks => " + tableRet.getString("remarks"));

System.out.println("type_cat => " + tableRet.getString("type_cat"));

System.out.println("type_schem => " + tableRet.getString("type_schem"));

System.out.println("type_name => " + tableRet.getString("type_name"));

System.out.println("self_referencing_col_name => " + tableRet.getString("self_referencing_col_name"));

System.out.println("ref_generation => " + tableRet.getString("ref_generation"));

}

其中的参数可以是

table_cat, table_schem, table_name, table_type, remarks, type_cat, type_schem, type_name, self_referencing_col_name, ref_generation

如果填写不正确将会抛出异常

java.sql.SQLException: Could not find COLUMN_NAME in [table_cat, tabl

### 启动和配置CDH中的Hive Metadata服务 #### 配置Metastore至MySQL 为了使Hive能够正常工作,需要将其元数据存储在关系型数据库中。通常情况下,推荐使用MySQL作为Hive的元数据存储解决方案[^2]。 - 安装MySQL客户端以及Python MySQL驱动程序: ```bash sudo yum install mysql-connector-python ``` - 创建用于保存Hive元数据信息的数据库实例,并赋予相应的用户权限。 - 更新`hive-site.xml`文件来指定连接参数,包括JDBC URL、用户名及密码等必要字段。此操作可以通过Cloudera Manager图形界面或者手动编辑XML文档实现: ```xml <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hivemetastore?createDatabaseIfNotExist=true&useSSL=false</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive_user</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>YourSecurePasswd!</value> </property> ``` #### 解决中文乱码问题 如果遇到字符集不兼容引起的数据展示异常情况,则需调整底层MySQL服务器的相关设置以支持UTF-8编码格式[^3]。 - 查看当前默认使用的字符集: ```sql SHOW VARIABLES LIKE 'character%'; ``` - 更改全局变量值为utf8mb4(更广泛的Unicode标准),并重启服务生效: ```sql SET GLOBAL character_set_server=utf8mb4; SET GLOBAL collation_server=utf8mb4_unicode_ci; ``` - 对于已存在的表结构也应相应地转换其内部定义: ```sql ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` #### 权限管理 通过SQL语句可以授予特定角色创建新对象的权利,在实际部署环境中建议遵循最小化授权原则仅给予必要的许可范围[^4]: ```sql GRANT CREATE ON DATABASE default TO GROUP test_role; ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值