在 Hive 中创建、添加和使用 UDF
Creating, adding and using a UDF in Hive
我已经将示例 UDF 写入 TRIM 来自配置单元中 table 的字符串:
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" 创建了一个 jar 并将其保存到 hive lib 文件夹中。
现在我 运行 关注 :
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
有人可以帮忙吗?提前致谢!
hive UDF 必须包含名为 evaluate
的函数。将名为 trim
的函数重命名为 evaluate
public Text evaluate(Text incomingData)
注意:String trimmed
作为class成员是不必要的。您可以将其移动为局部变量。
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
我已经将示例 UDF 写入 TRIM 来自配置单元中 table 的字符串:
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" 创建了一个 jar 并将其保存到 hive lib 文件夹中。 现在我 运行 关注 :
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
有人可以帮忙吗?提前致谢!
hive UDF 必须包含名为 evaluate
的函数。将名为 trim
的函数重命名为 evaluate
public Text evaluate(Text incomingData)
注意:String trimmed
作为class成员是不必要的。您可以将其移动为局部变量。
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