CDH5.9 hive查询表注释为乱码解决方法

本文介绍了解决Hive元数据库中表注释出现乱码的问题。通过调整MySQL数据库编码及修改相关表字段的字符集,确保注释正确显示。
hive 元数据库用的是MySQL
创建表后,用desc 在hive中查看表信息,注释显示乱码。解决方案如下:
1 进入mysql ,执行

show create database hive

查看hive 数据库当前编码,如果是utf8 则执行下面sql

alter database hive default character set latin1

将 hive 数据库默认编码改成 latin1
2 执行下面sql ,修改表

use hive;
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
alter table PARTITION_PARAMS  modify column PARAM_VALUE varchar(4000) character set utf8;
alter table PARTITION_KEYS  modify column PKEY_COMMENT varchar(4000) character set utf8;
alter table  INDEX_PARAMS  modify column PARAM_VALUE  varchar(4000) character set utf8;

3、就是将表重建或者通过alter 修改原有乱码表的注释

### Hive与HBase整合的基本概念 在大数据生态系统中,Hive和HBase各自承担着不同的角色。Hive主要用于处理大规模数据集的批处理任务,并支持类SQL的查询方式;而HBase则是一个分布式、版本化的键值存储系统,适用于实时读写场景。由于HBase本身的查询语言较为原始,缺乏类SQL的支持,因此常常通过Hive来简化对HBase中数据的操作[^1]。 ### 整合步骤概述 #### 1. 配置环境 在CDH环境中实现Hive与HBase的整合之前,需要确保以下几点配置正确: - **Hive与HBase服务已安装并正常运行**:确保Hive Metastore服务、HiveServer2以及HBase的相关服务(如HMaster、HRegionServer)均已启动。 - **启用Hive访问HBase的功能**:确保Hive的`hive-site.xml`文件中包含了HBase相关的JAR包路径,通常这些JAR包位于HBase的lib目录下。 - **调整HiveServer2的安全设置**:如果使用HiveServer2或Beeline进行操作,则建议将`hive.server2.enable.doAs`参数设置为`false`,以避免在创建HBase表时出现权限问题[^4]。 #### 2. 创建Hive外部表指向HBase表 为了能够在Hive中操作HBase中的数据,可以通过定义一个外部表的方式,使得Hive能够访问HBase中的现有表。具体语法如下: ```sql CREATE EXTERNAL TABLE user_profile ( username STRING, labels MAP<STRING, STRING> ) STORED BY &#39;org.apache.hadoop.hive.hbase.HBaseStorageHandler&#39; WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf:#s:b") TBLPROPERTIES("hbase.table.name" = "user_profile"); ``` 此语句创建了一个名为`user_profile`的外部表,它映射到HBase中同名的表。其中,`:key`表示HBase行键,`cf:#s:b`表示列族`cf`下的所有列,且数据类型为字符串。这种方式允许Hive直接读取HBase中的数据,而不影响HBase中原有的数据结构[^3]。 #### 3. 创建由Hive管理的HBase表 除了可以创建指向已有HBase表的外部表之外,还可以通过Hive直接创建新的HBase表。这种情况下,Hive不仅负责定义表结构,还负责管理底层HBase表的生命周期。示例如下: ```sql CREATE TABLE hbase_table_1( key INT, value STRING ) STORED BY &#39;org.apache.hadoop.hive.hbase.HBaseStorageHandler&#39; WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val") TBLPROPERTIES ( "hbase.table.name" = "xyz", "hbase.mapred.output.outputtable" = "xyz" ); ``` 此语句会在HBase中创建一个名为`xyz`的新表,并且该表由Hive管理。每当通过Hive对该表执行插入操作时,实际上是在向HBase中写入数据。同时,Hive也会维护这个表的元数据信息[^2]。 #### 4. 数据导入与导出 一旦完成了Hive与HBase之间的整合,就可以利用Hive提供的丰富SQL接口来进行数据导入和导出操作。例如,可以从其他Hive表中抽取数据并通过INSERT INTO语句将其加载到HBase表中,或者反过来从HBase表中提取数据用于进一步分析。 ```sql -- 向HBase表中插入数据 INSERT INTO TABLE hbase_table_1 VALUES (1, &#39;value1&#39;), (2, &#39;value2&#39;); -- 查询HBase表中的数据 SELECT * FROM hbase_table_1; ``` 以上命令展示了如何向HBase表中添加记录以及如何检索这些记录。值得注意的是,在实际应用过程中可能还需要根据具体的业务需求优化查询性能,比如合理设计索引、分区策略等。 ### 注意事项 - 在进行Hive与HBase整合时,需要注意两者版本之间的兼容性问题。不同版本的CDH可能会有不同的依赖关系和配置要求。 - 对于生产环境中的大规模部署,应仔细规划资源分配,包括内存、CPU及磁盘I/O等方面,以保证系统的稳定性和高效性。 - 安全性方面,除了上述提到的`hive.server2.enable.doAs`参数外,还应该考虑Kerberos认证、SSL加密传输等安全机制的应用。 通过以上步骤,可以在CDH环境中成功地将Hive与HBase集成起来,从而充分利用两者的优点,提高数据处理效率和灵活性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值