JavaUDF在配置单元查询中调用时未返回预期结果

sigwle7e  于 2021-05-29  发布在  Hadoop
关注(0)|答案(0)|浏览(257)

当我在配置单元中调用javaudf时,它返回的结果与ide中返回的结果不一致(排序顺序与提供的字符串相同)。创建udf是为了从字符串中删除重复项,并以相同的顺序返回输出,但使用小写。
例如。:

Sony+sony+E2312+xperia+sony => sony+e2312+xperia

在ide内部执行时,它返回正确的值(如上所述),但从配置单元控制台调用时,它返回:

e2312+sony+xperia

自定义项代码:

package com.javaudf.hive;

import java.util.LinkedHashSet;
import java.util.Set;
import org.apache.commons.lang3.StringUtils;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;

    public class processDeviceModel extends UDF {
        private Text result = new Text();
        private String delimiters = "[-+\\s*_=|;:]";
        public Text evaluate(Text input) {
            String dmModel = new String();
            if (input == null || input.getLength() == 0) 
                return null;
            else
                dmModel = input.toString().trim().toLowerCase();
            String[] parts = dmModel.split(delimiters);
             Set<String> uniqueparts = new LinkedHashSet<String>();
            for(int i = 0; i < parts.length; i++){
                uniqueparts.add(parts[i]);
            }
             String str = StringUtils.join(uniqueparts, '+');
            result.set(str);
            return result;
        }
    }

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题