【问题标题】:Hive : accented characters to their non accented counterpartsHive :重音字符到非重音字符
【发布时间】:2017-08-06 19:31:25
【问题描述】:

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

我知道我可以使用regexp_replace(),但我必须处理所有重音/非重音对。当然,还有更实用的东西吗?

【问题讨论】:

    标签: hive hiveql


    【解决方案1】:

    看来你想用

    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);
      }
    }
    

    【讨论】:

    • 您好,您知道如何在 Hive 查询中使用它吗?
    猜你喜欢
    • 1970-01-01
    • 2015-11-05
    • 2023-04-01
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    相关资源
    最近更新 更多