从long转换为Text

时间:2016-10-26 11:03:34

标签: java hadoop hive

我有以下方法

import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;

public class IpConversion extends UDF{
    private Text result = new Text();
    static int power = 0;

    public Text evaluate(String input){
        if(input != null){
            long res = 0;
            String [] ipAddressInArray = input.split("\\.");

            for(int i=ipAddressInArray.length-1; i>= 0; i--){
                long ip = Integer.parseInt(ipAddressInArray[i]);
                res += ip * Math.pow(256, power);
                power += 1;
                //System.out.println(ipAddressInArray(i));        
            }

            return result;
        }
        //return null;
    } 
}

我试图将变量reslong转换为Textorg.apache.hadoop.io.Text),但我不知道该怎么做。我尝试将其从long toString()转换为然后使用.set()类的方法Text,但我遇到了错误"无法返回void "

任何人都可以帮助我吗? 感谢。

1 个答案:

答案 0 :(得分:1)

Here是您Text课程的文档。如您所见,您可以使用Text实例化Text myText = new Text(myString)对象。

所以在你的情况下它看起来像这样:

....
return new Text(""+res); 

首先,它创建一个带有""+res的String(将你的long附加到一个空字符串),然后用一个字符串`new Text(“....”)实例化一个新的Text对象;并立即归还。