蜂巢/因帕拉UDF与字符串输入/输出
问题描述:
我期待到帕拉/蜂巢UDF的例子,例如:蜂巢/因帕拉UDF与字符串输入/输出
public class FuzzyEqualsUdf extends UDF {
public FuzzyEqualsUdf() {
}
public BooleanWritable evaluate(DoubleWritable x, DoubleWritable y) {
double EPSILON = 0.000001f;
if (x == null || y == null)
return null;
return new BooleanWritable(Math.abs(x.get() - y.get()) < EPSILON);
}
}
然后我试图创建自己的UDF,它有字符串作为输入和字符串作为输出。理想情况下,它应该看起来像:
public class MyUdf extends UDF {
public MyUdf() {
}
public StringWritable evaluate(StringWritable x) {
String[] y = x.split(",");
String z = y[0] + "|" + y[1]
return new StringWritable(z);
}
}
不过,我的问题是有没有StringWritable
一流!我只看到:
import org.apache.hadoop.hive.serde2.io.ByteWritable;
import org.apache.hadoop.hive.serde2.io.DoubleWritable;
import org.apache.hadoop.hive.serde2.io.ShortWritable;
import org.apache.hadoop.hive.serde2.io.TimestampWritable;
我如何用字符串类型的输入/输出UDF不StringWritable类?谢谢!
答
毛豆。可能你可以使用org.apache.hadoop.io.Text类。
你可以参考一下Hive的内置函数。我提到修剪这需要字符串输出字符串
答
原来只是使用输入Java的String类型/输出将正常工作。
public String evaluate(String x) {
String[] y = x.split(",");
String z = y[0] + "|" + y[1]
return new StringWritable(z);
}