实际工作环境中hive导出数据到Mysql,总是报错
ncorrect string value: ‘\xF0\x9F\x98\x97\xF0\x9F…’这是因为hive表字段中存在特殊字符,但是mysql不支持。
下面写udf函数过滤掉特殊字符:
package com.***;
import org.apache.commons.lang3.CharEncoding;
import org.apache.hadoop.hive.ql.exec.UDF;
public class StringFilterEmoji extends UDF {
public String evaluate(String str) {
StringBuffer out = new StringBuffer();
if (str == null || ("".equals(str)))
return "";
char[] chars = str.toCharArray();
for(int i = 0; i < chars.length; i ++) {
if((chars[i] >= 19968 && chars[i] <= 40869) //中日朝兼容形式的unicode编码范围: U+4E00——U+9FA5
|| (chars[i] >= 11904 && chars[i] <= 42191)//中日朝兼容形式扩展
|| (chars[i] >= 63744 && chars[i] <= 64255)//中日朝兼容形式扩展
|| (chars[i] >&