Hive建表乱码解决--设置编码格式UTF8

1.创建Hive元数据库

Hive元数据存储在MySQL中,因此需要进入MySQL中创建Hive元数据库;若已存在Hive元数据库,则修改元数据库字符格式
hive建库语句:

 create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

只有修改编码后才加入的中文注释才会正常显示 ,修改编码前已经存在的中文注释会乱码!

##创建hive元数据库hive,并指定utf-8编码格式
mysql>create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;##修改已存在的hive元数据库,字符编码格式为utf-8
mysql>alter database hive character set utf8;     ##进入hive元数据库
mysql>use hive;##查看元数据库字符编码格式
mysql>show variables like 'character_set_database';  

可以看到原本编码是Hive在搭建时选择的默认格式。

2.修改Hive的元数据信息

Hive启动后,修改Hive的元数据信息,无需重启MySQL和Hive就能生效;
1).修改字段注释字符集(直接复制运行即可)

alter table hive.COLUMNS_V2 modify column COMMENT varchar(256) character set utf8

2).修改表注释字符集

alter table hive.TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8

3).修改分区表参数,以支持分区键能够用中文表示

alter table hive.PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8
alter table hive.PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8

4).修改索引注解

alter table hive.INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

自此重新建表,乱码问题即可解决

Hive无法创建中文分区

报错如下:

hive> alter table page_view add partition(ds='20240618开心');
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:Exception thrown when executing query)

解决办法如下:

MariaDB [hive]> show create table PARTITIONS;| PARTITIONS | CREATE TABLE `PARTITIONS` (`PART_ID` bigint(20) NOT NULL,`CREATE_TIME` int(11) NOT NULL,`LAST_ACCESS_TIME` int(11) NOT NULL,`PART_NAME` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,`SD_ID` bigint(20) DEFAULT NULL,`TBL_ID` bigint(20) DEFAULT NULL,`LINK_TARGET_ID` bigint(20) DEFAULT NULL,PRIMARY KEY (`PART_ID`),UNIQUE KEY `UNIQUEPARTITION` (`PART_NAME`,`TBL_ID`),KEY `PARTITIONS_N49` (`TBL_ID`),KEY `PARTITIONS_N50` (`SD_ID`),KEY `PARTITIONS_N51` (`LINK_TARGET_ID`),CONSTRAINT `PARTITIONS_FK1` FOREIGN KEY (`TBL_ID`) REFERENCES `TBLS` (`TBL_ID`),CONSTRAINT `PARTITIONS_FK2` FOREIGN KEY (`SD_ID`) REFERENCES `SDS` (`SD_ID`),CONSTRAINT `PARTITIONS_FK3` FOREIGN KEY (`LINK_TARGET_ID`) REFERENCES `PARTITIONS` (`PART_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |MariaDB [hive]> alter table PARTITIONS  modify column `PART_NAME` varchar(767) character set utf8;
ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
MariaDB [hive]> alter table PARTITIONS  modify column `PART_NAME` varchar(100) character set utf8;   
Query OK, 0 rows affected (0.01 sec)               
Records: 0  Duplicates: 0  Warnings: 0MariaDB [hive]> alter table PARTITIONS  modify column `PART_NAME` varchar(300) character set utf8;   
ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
MariaDB [hive]> alter table PARTITIONS  modify column `PART_NAME` varchar(200) character set utf8;   
Query OK, 0 rows affected (0.00 sec)               
Records: 0  Duplicates: 0  Warnings: 0MariaDB [hive]> alter table PARTITIONS  modify column `PART_NAME` varchar(250) character set utf8;  
Query OK, 0 rows affected (0.00 sec)               
Records: 0  Duplicates: 0  Warnings: 0MariaDB [hive]> alter table PARTITIONS  modify column `PART_NAME` varchar(260) character set utf8;  
ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes

另验证一个问题,utf8占用三个字节,之前默认是767,若指定250 * 3 = 750可以,但260*3=780不可以;

再去创建中文分区测试即可成功

alter table page_view add partition(ds='20240618开心');

插入数据

insert into page_view  partition(ds='20240618') values (1,"张三","李四") ;

查看包含中文的数据

select * from page_view where ds="20240618";

查看索引

SHOW FORMATTED INDEX ON page_view;

查看表结构

desc page_view;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/31938.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kafka第二篇——主题创建,主题分区副本分配策略

目录 主题创建 引入 回顾主题,分区,副本关系 代码 主题分区副本分配策略 底层逻辑分析 主题创建 引入 为啥才开始在idea上跑代码,topic都没创建出来,就直接跑出来了? 这是因为AutoTopicCreationManger参数可以自动创建主题…

数据结构经典面试之链表——C#和C++篇

文章目录 一、链表的基本概念二、链表的操作三、定义链表的节点结构体(C#)四、定义链表的基本操作类(C#)五、创建一个链表实例并进行基本操作演示(C#)六、编写一个自定义链表操作函数(C&#xf…

复分析——第4章——Fourier变换(E.M. Stein R. Shakarchi)

第4章 Fouier变换 Raymond Edward Alan Christopher Paley, Fellow of Trinity College, Cambridge, and International Research Fellow at the Massachusetts Institute of Technology and at Harvard University, was killed by an avalanche on April 7, 1933, whi…

鞠婧祎多个商标被丝芭传媒申请注册!

近日鞠婧祎与丝芭传媒合约引发网络关注,普推商标老杨经检索发现,丝芭传媒早在2016起就申请注册了“鞠婧祎”24个商标,涉及多个商标分类,这些基本都下商标注册证。 不管对经纪公司还是网红公司,有实力的基本都会对旗下的…

数据可视化实验四:Pyecharts数据可视化

目录 一、使用PyEcharts绘制全国肺炎确诊人数分布图 1.1 柱状图 1.1.2 代码实现 1.1.2 绘制结果 1.2 饼状图 1.2.1 代码实现 1.2.2 绘制结果 1.3 使用over lap实现图形叠加 1.3.1 代码实现 1.3.2 绘制结果 1.4 地图绘制-Map 1.4.1 代码实现 1.4.2 绘制结果 1.5 地…

培训兼职导师可靠吗?

培训兼职导师有真有假。在现实中,确实存在正规的培训兼职导师的机会,这些通常是由正规的教育机构或企业提供的,旨在帮助有教育热情和专业知识的人成为合格的兼职导师。然而,也有许多骗局打着“培训兼职导师”的幌子,骗…

51学习记录(一)——51介绍及震动感应灯

文章目录 前言一、STC89C522.内部结构及引脚 二、继电器原理及震动传感器原理三、项目搭建及实现 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出 提示:以下是本篇文章正文内容,下面案例可供参考 一、STC89C52 1.简介 所属系列:51单…

功率电源中器件的温升与极限工作温度

功率电源中器件的温升与极限工作温度 熟悉电子电路设计的朋友一定都知道,在电源整体设计中存在一些发热非常严重的器件,如整流桥、MOS管、快恢复二极管这些器件。而在功率电源中,电感和高频变压器则成为了发热现象的重灾区。那么在功率电源中,它们的合理温升应该是多少,在…

计算机网络 VLAN间路由单臂路由

一、理论知识 VLAN是一种将物理网络划分成多个逻辑网络的方法。不同的VLAN属于不同的网段,因此互相通信需要通过路由器进行路由。通常情况下,在同一VLAN内的设备可以直接通信,而不同VLAN之间的设备则需要通过路由器转发数据。本实验利用单臂…

为什么配置Java环境后会出现SSL问题?

在配置Java 8环境后出现SSL证书问题,可能是由于Java 8中高版本禁用了一些旧版SSL/TLS协议,这些协议被认为存在安全漏洞。例如,Java 8从1.8.0_181版本开始禁用了SSLv3、TLSv1和TLSv1.1协议。如果您的应用程序或依赖的库试图使用这些已经被禁用…

html--404页面

<!DOCTYPE html> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"> <meta http-equiv"X-UA-Compatible" content"IEedge,chrome1"> <title>404 错误页面不存在&…

适用于 AI/ML 工作负载的有状态 KES

在此概念验证 &#xff08;POC&#xff09; 中&#xff0c;我们将探讨在 Kubernetes &#xff08;k8s&#xff09; 生态系统中安装和管理有状态密钥加密服务 &#xff08;KES&#xff09;。本指南促进了加密操作的无缝衔接&#xff0c;而不会将敏感的密钥材料暴露给使用型应用程…

2024年华为OD机试真题-万能字符单词拼写-C++-OD统一考试(C卷D卷)

2024年OD统一考试(D卷)完整题库:华为OD机试2024年最新题库(Python、JAVA、C++合集) 题目描述: 有一个字符串数组words和一个字符串chars。 假如可以用chars中的字母拼写出words中的某个“单词”(字符串),那么我们就认为你掌握了这个单词。 words的字符仅由 a-z 英文小…

Spring Boot 3 整合 Redisson 实现分布式锁

Spring Boot 3 整合 Redisson 实现分布式锁 这篇博客详细介绍了如何在 Spring Boot 3 项目中使用 Redisson 实现分布式锁&#xff0c;包括依赖引入、Redis 配置、Redisson 配置、实现锁服务&#xff0c;以及测试控制器。希望对你有帮助&#xff01; 介绍 在分布式系统中&#…

Spring boot 单元测试类

在Spring Boot中&#xff0c;我们可以使用Spring Boot Test框架来进行单元测试。这是一个非常强大的工具&#xff0c;可以帮助我们模拟Spring环境&#xff0c;进行各种测试&#xff0c;如集成测试、容器测试等。 以下是一些Spring Boot 单元测试的示例。 基本的Spring Boot测…

【2024最新精简版】线程安全/多线程 面试篇

文章目录 一. 线程基础线程和进程什么是进程什么是线程 并发与并行的区别创建线程继承Thread类实现Runable接口实现Callable接口使用线程池 线程状态等待唤醒机制等待方法唤醒方法 二. 线程池线程池作用创建线程池线程池任务调度流程阻塞队列 BlockingQueue线程池拒绝策略核心线…

只有程序员才能看懂的笑话

哈喽&#xff0c;大家好&#xff0c;我是明智 今天又是周五摸鱼日&#xff5e; 咱们不聊技术&#xff0c;看点别的有意思的东西 往期摸鱼记录&#xff1a; 》》》程序员的那些经典段子 》》》写出bug不用怕&#xff0c;世界就是一个巨大的草台班子 【1】二进制 世界上有10种人&…

三维渲染计算阴影

在三维渲染中&#xff0c;计算阴影是提升场景真实感的关键步骤。阴影不仅提供了物体间的相对位置和空间关系&#xff0c;还增强了场景的立体感和深度感。计算阴影的方法多种多样&#xff0c;以下是几种主要的阴影计算技术及其实现原理。 1. 阴影映射&#xff08;Shadow Mappin…

随机链表的复制 排序链表

随机链表的复制 题目 . - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 思路&#xff1a; ①一个结点一个节点去拷贝&#xff0c;当拷贝了第一个节点的时候&#xff0c;把原节点与拷贝节点连接起来&#xff0c;直接到所有的节点拷贝完毕&#xff0c;这样做的目的…

专业技能篇---计算机网络

文章目录 前言计算机网络基础一、网络分层模型 HTTP一、从输入URL到页面显示发生了什么&#xff1f;二、Http的状态码有哪些&#xff1f;三、 HTTP与HTTPS有什么区别&#xff1f;四、URI 和 URL 的区别是什么?五、Cookie和Session有什么区别&#xff1f;六、GET与POST WebSock…