一.个人初始开发环境的基本情况以及Hive元数据库说明

①hive的元数据库改成了mysql(安装完mysql之后也没有进行其它别的设置)

②hive-site.xml中设置元数据库对应的配置为  jdbc:mysql://crxy99:3306/hive_cz3q?createDatabaseIfNotExist=true

③普通情况下咱们的mysql默认编码是latin1,但是我们在日常开发中大多数情况下需要用到utf-8编码,如果是默认latin1的话,咱们的中文存储进去容易乱码,所以说大家在遇到一些数据乱码的情况话,最好把mysql的编码改成utf-8.

但是在这里要非常严重强调的一点:hive的元数据metastore在mysql的数据库,不管是数据库本身,还是里面的表编码都必须是latin1(CHARACTER SET latin1 COLLATE latin1_bin)!!!!!

验证方式:(可以通过客户端软件在数据库上右键属性查看,也可以通过命令查看)

mysql> show create database hive_cz3q;

+-----------+-----------------------------------------------------------------------------------------+

| Database | Create Database |

+-----------+-----------------------------------------------------------------------------------------+

| hive_cz3q | CREATE DATABASE `hive_cz3q` /*!40100 DEFAULT CHARACTER SET latin1 COLLATE latin1_bin */ |

+-----------+-----------------------------------------------------------------------------------------+

不然会有类似如下的错误:

那么怎么修改mysql的编码为utf8呢?这里提供了在线安装修改和离线方式安装下的修改方式供大家选择!

二.乱码的情况:

向hive的表中 创建表,表语句部分如下:

create table ods.ods_order

(

ORDER_IDint comment '订单ID',

ORDER_NO varchar(30) comment '订单编号(唯一字段),前缀字符表示订单来源:a,Andriod;b,微博;c,WEB;e,饿了么;i,Iphone;m,Mobile;x,微信; z,中粮我买网;l,其它。 接着3位数字代表订单城市编号;接着字符z与后面的真正订单编号分隔。这套机制从2014年12月开始实施。',

DEALER_IDint comment '门店ID',

CUST_IDint comment '客户ID',

**********

在创建表的时候,字段可以有 comment,但是 comment 建议不要用中文说明,因为我们说过,hive 的 metastore 支持的字符集是 latin1,所以中文写入的时候会有编码问题,如下图!

然后通过desc ods_order 查看 对应的comment中是中文的地方,通过Xshell显示全部都是 "?" 问号.  同时确认了Xshell支持显示中文(排除Xshell的问题).

以上就是说Hive在字段定义时的Comment中文乱码问题.

有了上述的问题,那么我们该如何去解决注释中文乱码问题呢?

三.解决方式:

1.首先进行Mysql的编码设置

(1)离线安装mysql的修改方式:

①修改编码,设置为utf8

拷贝 mysql 的配置文件/usr/share/mysql/my-small.cnf 到/etc/my.cnf

在mysql 配置文件/etc/my.cnf 中增加以下内容

[client]下面增加default-character-set=utf8

在[mysqld]下面增加default-character-set=utf8

init_connect='SET NAMES utf8'

②重启mysql 服务(这样确保缺省编码是utf8)

service mysqld restart

③验证编码是否改成了utf8:

输入命令 "\s"

输入命令:show variables like 'char%'

输入命令:show variables like "colla%";

OK修改成功!

④这样在启动hive,向hive中插入的表中comment等有汉字的情况,就可以正常的显示(如下为本人测试的部分显示结果):

0: jdbc:hive2://localhost:10000/ods> desc ods_order;

+--------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------+--+

| col_name | data_type | comment |

+--------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------+--+

| order_id | int | 订单ID |

| order_no | varchar(30) | 订单编号(唯一字段),前缀字符表示订单来源:a,Andriod;b,微博;c,WEB;e,饿了么;i,Iphone;m,Mobile;x,微信; z,中粮我买网;l,其它。 接着3位数字代表订单城市编号;接着字符z与后面的真正订单编号分隔。这套机制从2014年12月开始实施。

(2)在线安装mysql的修改方式

①修改编码,设置为utf-8

在 mysql 配置文件/etc/my.cnf(不需要拷贝)中[mysqld]的下面增加以下内容

init_connect='SET collation_connection = utf8_unicode_ci'init_connect='SET NAMES utf8'character-set-server=utf8

collation-server=utf8_unicode_ci

skip-character-set-client-handshake

②重启mysqld服务

service mysqld restart

③ 和离线方式一样验证编码是否确实修改;

show variables like 'char%';

2.针对元数据库metastore中的表,分区,视图的编码设置

因为我们知道 metastore 支持数据库级别,表级别的字符集是 latin1,那么我们只需要把相应注释的地方的字符集由 latin1 改成 utf-8,就可以了。用到注释的就三个地方,表、分区、视图。如下修改分为两个步骤:

(1)、进入数据库 Metastore 中执行以下 5 条 SQL语句

①修改表字段注解和表注解

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;

(2)、修改 metastore 的连接 URL

javax.jdo.option.ConnectionURL

jdbc:mysql://IP:3306/db_name?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8

JDBC connect string for a JDBC metastore

测试结果:

以上就能完美的解决这个问题.

hive 中文字符过滤_hive中文字符乱码 解决方法【转】相关推荐

  1. h5ai v0.29中文文件名、文件、url乱码解决方法

    网上找了好久发现都是老版本的解决方法,而且我特么也不会php...蛋碎一地... 好了,不多说了,上方法 在h5ai的private\php\core下有个class-context.php文件 然后 ...

  2. JSP中文及传中文参数乱码解决方法小结

    在使用JSP的过程中,最使人头疼的一个问题就是中文乱码问题,以下是我在软件开发中遇到的乱码问题以及解决方法. 1.JSP页面乱码 这种乱码的原因是应为没有在页面里指定使用的字符集编码,解决方法:只要在 ...

  3. Base64中文乱码解决方法

    1.什么是base64编码 由于一些网络通讯协议的限制,你必须使用 window.btoa() 方法对原数据进行编码后,才能进行发送.接收方使用相当于 window.atob() 的方法对接受到的 b ...

  4. putty 中文乱码解决方法

    putty 中文乱码解决方法 方法一: 打开putty主程序,选择window-〉Appearance-〉Font settings-〉Change...,选择Fixedsys字体,字符集选择CHIN ...

  5. mysql 乱码 越南_MySQL_mysql数据库乱码之保存越南文乱码解决方法,我自己测试一下,很多字符变 - phpStudy...

    mysql数据库乱码之保存越南文乱码解决方法 我自己测试一下,很多字符变成了 '?'. 数据库连接已经是使用了 utf8 字符集: define("MYSQL_ENCODE", & ...

  6. windows7 中文乱码解决方法

    转自http://blog.sina.com.cn/s/blog_572e8c450100vg2t.html windows7 中文乱码解决方法 有下面这么一种情况: 以前在windows XP 上的 ...

  7. Crt链接linux中文乱码,securecrt怎么显示中文?securecrt中文乱码解决方法

    描述 SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件. SecureCRT支持SSH,同时支持Telnet和 ...

  8. SecureCRT中文乱码解决方法以及相关配置

    SecureCRT中文乱码解决方法以及相关配置 1.中文乱码:    打开对话窗口,在工具栏中点开"选项",选择"会话选项 在打开的"会话选项"中,选 ...

  9. java printwriter乱码_HttpServletResponse PrintWriter中文乱码解决方法

    首页 > Java Web > SpringMvc应用 > HttpServletResponse HttpServletResponse PrintWriter中文乱码解决方法 H ...

最新文章

  1. Hibernate 具体用法(自整理)
  2. 开发:异常收集之 ibatis+Oracle 查询时: ORA-00911错误
  3. wamp5.5.12安装re dis扩展
  4. Spring MVC请求url无效问题思考
  5. java学习(72):GUL流式布局管理器
  6. RabbitMQ开机启动 Centos7环境
  7. 静态链表相关算法学习
  8. ECCV 2020 Oral | BorderDet : 用边界特征做检测
  9. 黑猿大叔-译文 | TensorFlow实现Batch Normalization
  10. 离散元 python_离散元在土木工程领域的应用前景如何?
  11. 信号与系统考研复习例题详解_小语种日语日本文学复习考研资料加藤周一《日本文学史序说(上)》笔记和考研真题详解...
  12. “MapReduce: Simplified Data Processing on Large Clusters”
  13. Unity中制作小地图
  14. Android 自动接听 adb,GitHub - AndroidMsky/RootPlay: 安卓手机秒变网络摄像头,自动接起QQ视频。欢迎star,fork,Issues。...
  15. oracle创建哈希索引,ORACLE10g新特性——全局HASH分区索引
  16. python emf转gif_python – 将EMF / WMF文件转换为PNG / JPG
  17. 售前工作过程展示4“突发事件预警信息发布平台”
  18. pycharm下载思维导图插件 idea mind map
  19. cdr 表格自动填充文字_长期伏案于表格,查看数据时你需要一个聚光灯效果
  20. win10 ,在任务栏上,设置快速启动栏

热门文章

  1. 数据分析案例--01 城市餐饮店铺选址分析
  2. 免费获取ADS1299的AD原理图和封装!
  3. 日记500字初中计算机课,日记500字初中日常生活
  4. JAVA计算机毕业设计抑郁症患者博客交流平台Mybatis+源码+数据库+lw文档+系统+调试部署
  5. VB.net学习笔记(二十九)认识STA与MTA
  6. Python学习教程:针对任意多的分隔符拆分字符串
  7. 【疫情分析--数据采集】
  8. A Simple Math Problem题目翻译
  9. 基于Andriod的连锁药店管理系统-计算机毕业设计源码+LW文档
  10. 三年级神奇电子计算机教案,人教版三年级上册信息技术教案