我有以下方法
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;
}
}
我试图将变量res
从long
转换为Text
(org.apache.hadoop.io.Text
),但我不知道该怎么做。我尝试将其从long
toString()
转换为然后使用.set()
类的方法Text
,但我遇到了错误"无法返回void "
任何人都可以帮助我吗? 感谢。
答案 0 :(得分:1)
Here是您Text
课程的文档。如您所见,您可以使用Text
实例化Text myText = new Text(myString)
对象。
所以在你的情况下它看起来像这样:
....
return new Text(""+res);
首先,它创建一个带有""+res
的String(将你的long附加到一个空字符串),然后用一个字符串`new Text(“....”)实例化一个新的Text
对象;并立即归还。