Hive:重音字符到非重音字符

Hive : accented characters to their non accented counterparts

如何在发送到 hive 的 SELECT 请求中用对应的 ascii 字符替换非 ascii 字符?即删除重音符号(éêè => e)并删除其他非字母数字字符 (``)。

我知道我可以使用 regexp_replace(),但我必须处理每对 accented/non-accented。当然,还有更实用的东西?

看来你想用

String subjectString = "öäü";
subjectString = Normalizer.normalize(subjectString, Normalizer.Form.NFD);

如中所述 Replace non ASCII character from string

我试过使用 reflect 但由于 Normalizer.Form 枚举参数而无法使用。

所以,看来你得定义一个单行的UDF:

public class NormalizerUDF extends UDF {
  public String evaluate(String in) {
        return Normalizer.normalize(in, Normalizer.Form.NFD);
  }
}