创建,添加和蜂巢
问题描述:
使用UDF
我已经写了一个样本UDF在蜂巢从表TRIM的字符串:创建,添加和蜂巢
package anoop;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
public class DataTrim extends UDF{
String trimmed;
public Text trim(Text incomingData){
trimmed= incomingData.toString().trim();
return new Text(trimmed);
}
}
我创建了一个罐子对于这种“trim_string.jar”并将其保存到配置单元库文件夹。 现在我跑了以下内容:
add jar '~/hive-1.2.1/lib/trim_string.jar'; (success)
现在我运行
create temporary function trimmed1 as 'anoop.DataTrim';
但我得到以下错误:
FAILED: Class anoop.DataTrim does not implement UDF, GenericUDF, or UDAF
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask
可以请一些帮助?提前致谢!
答
配置单元UDF必须包含名为evaluate
的函数。命名trim
功能重命名为evaluate
public Text evaluate(Text incomingData)
注:String trimmed
是不必要的,因为类成员。你可以把它作为局部变量来运行。
package anoop;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
public class DataTrim extends UDF{
public Text evaluate(Text incomingData){
String trimmed;
trimmed= incomingData.toString().trim();
return new Text(trimmed);
}
}
欲了解更多信息,请参阅本tutorial
嗨, 我试着用上面的代码,但现在我得到错误: 失败:SemanticException [错误10014]:第1行:7周错误的论点“preciptotal ':没有与(字符串)类anoop.DataTrim匹配的方法。可能的选择:.......................... 我使用的命令是:从小时数限制10中选择trimmed1(skyconds); trimmed1是创建的临时函数。 请帮忙。 –
嗨。似乎我没有正确创建JAR。我使用上面的代码重新创建了它。现在完美。非常感谢帮助! –