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表情符相关推荐

  1. 2021年大数据Hive(八):Hive自定义函数

    全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 Hive自定义函数 一.概述 1.UDF(User-Define ...

  2. Hive自定义函数入门实例

    概念 UDF函数一共分为三种类型: ​ UDF-一进一出,给定一个参数,输出一个处理后的数据 ​UDAF-多进一出,属于聚合函数,类似于count.sum等函数 ​UDTF-一进多出,属于一个参数,返 ...

  3. Hive 史上最全面的大数据学习第九篇(五) Hive 自定义函数 每一天都是美好的一天!

    Hive概述 & 安装方式详解 Hive表操作 Hive表分类 Hive Sql 操作 Hive 自定义函数 Hive On HBase 六.Hive 自定义函数 在Hive当中又系统自带的函 ...

  4. hive自定义函数-身份证号合法性判断

    hive自定义函数-身份证号合法性判断 简要 代码 简要 身份证号合法性判断: 若为18位身份证号: 1.第18位数字,应该在身份证号最后一位校验位数字中 2.前17为数字分别乘以对应的加权因子,累加 ...

  5. hive - 自定义函数(超详细步骤,手把手的交)

    用Java开发自定义函数,步骤: 1.eclipse上新建一个工程project(db2019): 2.导jar依赖包: db2019右键 --build path --configure... -- ...

  6. 案例解析丨Spark Hive自定义函数应用

    摘要:Spark目前支持UDF,UDTF,UDAF三种类型的自定义函数. 1. 简介 Spark目前支持UDF,UDTF,UDAF三种类型的自定义函数.UDF使用场景:输入一行,返回一个结果,一对一, ...

  7. Hive 自定义函数编写(UDF,UDAF,UDTF)

    Hive自带了一些函数,比如:max/min等,但是数量有限,自己可以通过自定义 UDF来方便的扩展. 当 Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数. 1. ...

  8. Hive自定义函数(字母大小写转换)

    自定义Hive的函数,首先需要继承UDF类,然后定义方法名字为evaluate的方法,该方法不能设置void,如果需要返回为空,可以返回为null. 一个简单的大小写转换案例 特别注意看注释 pack ...

  9. 深入学习《Programing Hive》:Hive自定义函数之UDF

    为了满足用户的个性化需求,Hive被设计成了一个很开放的系统,很多内容都可以定制,主要包括: 1).文件格式: 2).内存中的数据格式,如Hadoop的Writable/Text: 3).用户提供的M ...

最新文章

  1. Hinton 新作!越大的自监督模型,半监督学习需要的标签越少
  2. C++之匿名对象与析构函数的关系
  3. MySQL force Index 强制索引概述
  4. php一对一模型关联,thinkphp 模型关联一对一排序
  5. 以太坊 p2p Server 原理及实现
  6. cobbler安装和基本配置
  7. sphereface 训练出现的问题
  8. hdu3397 线段树 成段更新
  9. latex 生成pdf显示行号
  10. 从零开始学习java一般需要多长时间?
  11. plc变频器c语言,PLC控制变频器的几种方法
  12. 最好用音频剪辑的软件,使用方法?
  13. 微博上面好看的跳舞美女蛮多的,【Python爬虫】采集微博视频数据(附代完整代码)
  14. SSL证书中DV、OV、EV证书的区别有哪些
  15. mysql的sleep线程多久_MySQL数据库sleep线程过多,怎么办?
  16. python在家怎么赚钱手工艺_在家手工赚钱的3个好方法(一天挣个百多块钱轻轻松松)...
  17. [转载]利用Web Services实现软件自动升级
  18. centos7安装后只有lo网卡
  19. 云服务器显示内存不足怎么调整,云服务器扩充内存
  20. VMware虐我千百遍,我却待她如初恋

热门文章

  1. Java 使用redis 设计一个每天重新开始计数的计数器
  2. 重新发现业务架构:银行数字化转型经验与方法分析
  3. 1. 不吹不擂,第一篇就能提升你对Bean Validation数据校验的认知
  4. 码码在线总结——java web开发
  5. python手机自动化测试脚本语言_python脚本语言? Appium移动自动化测试
  6. 加密和杂凑(Hashing)有什么不一样?
  7. 《你若安好,便是晴天》
  8. 解决合并单元格筛选时只出现首行的小技巧
  9. DOS操作系统的一些常用命令
  10. s-function的介绍