hive自定义函数过滤emoj表情符
mysql插入数据问题:java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x98\x8D\xE8\xBE…’ for column ‘job_title’ at row 1
问题原因:
数据中存在Emoj表情内容,每个字符占用4个字节,在Mysql中utf-8默认最大支持3个字节,超长了,所以报错了。
解决办法:
(1)在较新版本的Mysql上可选择修改数据类型为utf8mb4
(2)hive 数据处理过滤掉Emoj表情内容(Emoj数据一般无用),处理完再集成到MySQL数据库。用自定义函数
create temporary function StringFilter as ‘UppUDF.StringFilter’
using jar ‘hdfs://namenodeha/user/p66_u1038_upp_ludp1/tmp/StringFilter.jar’;
自定义函数代码如下:
import org.apache.commons.lang3.CharEncoding;
import org.apache.commons.lang3.CharUtils;
import org.apache.hadoop.hive.ql.exec.UDF;import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;/**** 过滤emoj表情符**/
public class StringFilter extends UDF {public String evaluate(String str){if(str == null || str == ""){return null;}else{StringBuilder sb = new StringBuilder();byte[] bytes = str.getBytes(StandardCharsets.UTF_8);for(int i=0; i<bytes.length; i++) {byte b = bytes[i];if(CharUtils.isAscii((char)b)){sb.append(new String(new byte[] {b}));}else if((b & 0xE0) == 0xC0) {sb.append(new String(new byte[] {b, bytes[++i]}));}else if((b & 0xF0) == 0xE0) {sb.append(new String(new byte[] {b, bytes[++i], bytes[++i]}));}else if((b & 0xF8) == 0xF0) {String str1 = new String(new byte[] {b, bytes[++i], bytes[++i], bytes[++i]});try{sb.append(URLEncoder.encode(str1, CharEncoding.UTF_8));}catch(Exception ignore) {}}}return sb.toString();}}
}
hive自定义函数过滤emoj表情符相关推荐
- 2021年大数据Hive(八):Hive自定义函数
全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 Hive自定义函数 一.概述 1.UDF(User-Define ...
- Hive自定义函数入门实例
概念 UDF函数一共分为三种类型: UDF-一进一出,给定一个参数,输出一个处理后的数据 UDAF-多进一出,属于聚合函数,类似于count.sum等函数 UDTF-一进多出,属于一个参数,返 ...
- Hive 史上最全面的大数据学习第九篇(五) Hive 自定义函数 每一天都是美好的一天!
Hive概述 & 安装方式详解 Hive表操作 Hive表分类 Hive Sql 操作 Hive 自定义函数 Hive On HBase 六.Hive 自定义函数 在Hive当中又系统自带的函 ...
- hive自定义函数-身份证号合法性判断
hive自定义函数-身份证号合法性判断 简要 代码 简要 身份证号合法性判断: 若为18位身份证号: 1.第18位数字,应该在身份证号最后一位校验位数字中 2.前17为数字分别乘以对应的加权因子,累加 ...
- hive - 自定义函数(超详细步骤,手把手的交)
用Java开发自定义函数,步骤: 1.eclipse上新建一个工程project(db2019): 2.导jar依赖包: db2019右键 --build path --configure... -- ...
- 案例解析丨Spark Hive自定义函数应用
摘要:Spark目前支持UDF,UDTF,UDAF三种类型的自定义函数. 1. 简介 Spark目前支持UDF,UDTF,UDAF三种类型的自定义函数.UDF使用场景:输入一行,返回一个结果,一对一, ...
- Hive 自定义函数编写(UDF,UDAF,UDTF)
Hive自带了一些函数,比如:max/min等,但是数量有限,自己可以通过自定义 UDF来方便的扩展. 当 Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数. 1. ...
- Hive自定义函数(字母大小写转换)
自定义Hive的函数,首先需要继承UDF类,然后定义方法名字为evaluate的方法,该方法不能设置void,如果需要返回为空,可以返回为null. 一个简单的大小写转换案例 特别注意看注释 pack ...
- 深入学习《Programing Hive》:Hive自定义函数之UDF
为了满足用户的个性化需求,Hive被设计成了一个很开放的系统,很多内容都可以定制,主要包括: 1).文件格式: 2).内存中的数据格式,如Hadoop的Writable/Text: 3).用户提供的M ...
最新文章
- Hinton 新作!越大的自监督模型,半监督学习需要的标签越少
- C++之匿名对象与析构函数的关系
- MySQL force Index 强制索引概述
- php一对一模型关联,thinkphp 模型关联一对一排序
- 以太坊 p2p Server 原理及实现
- cobbler安装和基本配置
- sphereface 训练出现的问题
- hdu3397 线段树 成段更新
- latex 生成pdf显示行号
- 从零开始学习java一般需要多长时间?
- plc变频器c语言,PLC控制变频器的几种方法
- 最好用音频剪辑的软件,使用方法?
- 微博上面好看的跳舞美女蛮多的,【Python爬虫】采集微博视频数据(附代完整代码)
- SSL证书中DV、OV、EV证书的区别有哪些
- mysql的sleep线程多久_MySQL数据库sleep线程过多,怎么办?
- python在家怎么赚钱手工艺_在家手工赚钱的3个好方法(一天挣个百多块钱轻轻松松)...
- [转载]利用Web Services实现软件自动升级
- centos7安装后只有lo网卡
- 云服务器显示内存不足怎么调整,云服务器扩充内存
- VMware虐我千百遍,我却待她如初恋