hive 中文字符过滤_0650-6.2.0-通过UDF实现HiveImpala的中文拼音排序
作者:余枫
1.问题重现
- 测试环境:
1.RedHat7.2
2.CDH6.2.0
3.使用root进行操作
1.在Hive中创建一个表,并导入数据如下
2.对s2字段进行排序
select * from hanzi order by s2;
在Hive中:
在Impala中:
由上面两张图可以看出,在Hive和Impala中排序都失败了,没有按照期望中的中文对应的拼音进行排序。
2.问题解决
1.想要实现对中文字段的排序,需要将中文字段转换成拼音,然后在Hive、Impala中对拼音进行排序即可。因此可以使用UDF在Java中写一个汉字转拼音的程序,然后在Hive、Impala中使用,代码如下:
public String evaluate(String ChineseLanguage) { char[] cl_chars = ChineseLanguage.trim().toCharArray(); String hanyupinyin = ""; HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 输出拼音全部小写 defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调 defaultFormat.setVCharType(HanyuPinyinVCharType.WITH_V); try { for (int i = 0; i < cl_chars.length; i++) { if (String.valueOf(cl_chars[i]).matches("[一-龥]+")) {// 如果字符是中文,则将中文转为汉语拼音 hanyupinyin += PinyinHelper.toHanyuPinyinStringArray(cl_chars[i], defaultFormat)[0]; } else {// 如果字符不是中文,则不转换 hanyupinyin += cl_chars[i]; } } } catch (BadHanyuPinyinOutputFormatCombination e) { System.out.println("字符不能转成汉语拼音"); } return hanyupinyin;}
2.将编写好的代码打成jar包并上传到服务器
打包前在POM文件中加入配置,将所有依赖也一起打成一个jar包
maven-assembly-plugin cn.com.gzcb.hive.udf.HanyuPinyinHelperjar-with-dependenciesorg.apache.hive hive-exec 2.1.1-cdh6.2.0com.belerweb pinyin4j 2.5.0
使用mvn assembly:assembly命令打包,打好的包如下,以-jar-with-dependencies结尾
上传到服务器
3.将jar包上传到HDFS,创建UDF函数
上传到/user/hive/udfjar目录下
进入Hive中,创建UDF函数
create function default.parse_chinese as 'cn.com.gzcb.hive.udf.HanyuPinyinHelper' using jar 'hdfs://cdh177.macro.com:8020/user/hive/udfjar/hive-udf-0.0.1-SNAPSHOT-jar-with-dependencies.jar';
4.再次对hanzi表进行排序
select s2,parse_chinese(s2) as s3 from hanzi order by s3;
Hive
Impala
从Hive和Impala的执行结果可以看出,是按照拼音的升序成功进行了排序。
3.问题总结
无论是Hive还是Impala都不支持中文按照拼音的排序,因为它们支持的主要是标准的ASCII字符集并不包含中文,如果要对中文按照拼音排序,需要通过UDF将中文转换成拼音后实现,而中文转换成拼音的函数Java中有很多现成的参考比较方便。
hive 中文字符过滤_0650-6.2.0-通过UDF实现HiveImpala的中文拼音排序相关推荐
- 中文字符匹配java_java正则匹配HTML中a标签里的中文字符示例
java正则匹配HTML中a标签里的中文字符示例 发布于 2020-8-12| 复制链接 摘记: 本文实例讲述了java正则匹配HTML中a标签里的中文字符.分享给大家供大家参考,具体如下:今天群里一 ...
- hive 中文字符过滤_hive中文字符乱码 解决方法【转】
一.个人初始开发环境的基本情况以及Hive元数据库说明 ①hive的元数据库改成了mysql(安装完mysql之后也没有进行其它别的设置) ②hive-site.xml中设置元数据库对应的配置为 j ...
- hive 中文字符过滤_Hive UDF 过滤字符串中的中英文标点符号
使用Hive 过程中 需要做一些UDF的开发,简单贴一个UDF 是用来去除字符串中的所有中英文符号 本人Java菜鸟 代码可能不好看勿喷啊.仅供参考 package com.fccs.utils; i ...
- php正则获取标签,PHP通过正则匹配中文字符 过滤html标签 获取文本内容
正则匹配中文汉字根据页面编码不同而略有区别: GBK/GB2312编码:[x80-xff]+ 或 [xa1-xff]+ UTF-8编码:[x{4e00}-x{9fa5}]+/u [php] $str ...
- java a标签正则_正则表达式:java中婚配HTML中a标签中的中文字符
正则表达式:java中匹配HTML中a标签中的中文字符 今天群里一位朋友问到了一个正则表达式的问题,有如下内容: 特432 453543 a1特123你好123吗? 特2 标签中的文字现在要匹配出内容 ...
- tinyxml 读取文本节点_在Windows下使用TinyXML-2读取UTF-8编码包含中文字符的XML文件...
TinyXML-2 是一个用 C++ 开发的小巧.高效的 XML 解析工具,它在 GitHub 网站上的链接为: https://github.com/leethomason/tinyxml2 .它的 ...
- 0020-使用JDBC向Kudu表插入中文字符-双引号的秘密
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看. 1.问题描述 使用Impala JDBC向Kudu表中插入中文字符,插入的中文字符串乱码,中文字符串被截断. 2.问题复现 测试环境: ...
- MySQL判断中文字符的方法(转)
准备: 2.1.环境 MySQL mysql> SHOW VARIABLES LIKE "%version%"; +-------------------------+--- ...
- 解决 Javascript 中 atob 方法解码中文字符乱码问题
转载地址:http://blog.sqrtthree.com/2015/08/29/utf8-to-b64/ 首先, 为什么要编码? 由于一些网络通讯协议的限制, 又或者是出于信息加密的目的, 我们就 ...
最新文章
- 通信网络设计(最小生成树+图的联通)
- 招聘 | 阿里巴巴搜索推荐事业部-知识图谱校招
- 如何使用Twitter Bootstrap获得中心内容?
- Journey to Un‘Goro 贪心,找规律,搜索(沈阳)
- 4.1.2 OS之文件逻辑结构(顺序文件、索引文件、索引顺序文件、多级索引顺序文件)关于数据库的索引如聚簇索引可以看一下索引文件例题的解析,感觉还是可以收获到东西的
- 逆天Kali带你游遍大江南北~安全之前人铺路!
- 洛谷 P3469 [POI2008]BLO-Blockade (Tarjan,割点)
- ffmpeg库编译加文字_1.编译ffmpeg库
- C语言模拟实现标准库函数之memcpy()
- 对公平席位分配问题的探讨:最大余数法、Q值法和D’Hondt方法及其特例|公平分配原则等
- 《王者荣耀》宣布将推独立女子电竞赛事:跟进奥运会
- matlab prn文件,PRN文件扩展名 - 什么是.prn以及如何打开? - ReviverSoft
- 关于ModbusTCP通讯汇川PLC
- 华为m2青春版android7,7吋巨屏跨界之作 华为揽阅M2青春版评测
- [Excel常用函数] countif countifs函数
- word文档找不到smartart_图文详解Word文档插入SmartArt图形的方法
- python爬虫之无界面模式操作/scrapy框架
- Rust 安装,卸载,nightly/stable版本切换(全局或工作空间),提高下载速度
- DZ论坛克米模板3.5版全解密+完整插件/教程
- 浅谈服务端渲染(SSR) 与使用场景
热门文章
- 结构体struct的定义和使用
- 微软发布 PowerToys 0.12.0,带来批量处理工具和暗黑模式
- Bare HTTP不完全是RESTful
- Redis:复制,第1部分——概述 复制与分片、哨兵与集群、Redis拓扑
- c# 日期转换为单词
- 人工智能是一个工程问题,而不是魔术!
- java服务器返回错误码,java - java.io.IOException:服务器返回URL的HTTP响应代码:409 - 堆栈内存溢出...
- 各种水龙头拆卸图解_各种水龙头拆卸图解法
- python 享元模式_设计模式-创建型模式,python享元模式 、python单例模式(7)
- 提高学生对计算机学科学习兴趣的研究的结题报告,《如何在体育教学中运用体育游戏》的研究结题报告...