java—在hive中创建、添加和使用udf

atmip9wb  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(444)

我编写了一个示例udf,用于从配置单元中的表中修剪字符串:

  1. package anoop;
  2. import org.apache.hadoop.hive.ql.exec.UDF;
  3. import org.apache.hadoop.io.Text;
  4. public class DataTrim extends UDF{
  5. String trimmed;
  6. public Text trim(Text incomingData){
  7. trimmed= incomingData.toString().trim();
  8. return new Text(trimmed);
  9. }
  10. }

我为这个“trim\u string.jar”创建了一个jar,并将其保存到hive lib文件夹中。现在我运行以下命令:

  1. add jar '~/hive-1.2.1/lib/trim_string.jar'; (success)

现在我跑了

  1. create temporary function trimmed1 as 'anoop.DataTrim';

但我得到了以下错误:

  1. FAILED: Class anoop.DataTrim does not implement UDF, GenericUDF, or UDAF
  2. FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask

有人能帮忙吗?提前谢谢!

jk9hmnmh

jk9hmnmh1#

配置单元udf必须包含名为 evaluate . 重命名名为 trimevaluate 公共文本评估(文本输入数据)
注: String trimmed 作为班级成员是不必要的。你可以把它作为一个局部变量。

  1. package anoop;
  2. import org.apache.hadoop.hive.ql.exec.UDF;
  3. import org.apache.hadoop.io.Text;
  4. public class DataTrim extends UDF{
  5. public Text evaluate(Text incomingData){
  6. String trimmed;
  7. trimmed= incomingData.toString().trim();
  8. return new Text(trimmed);
  9. }
  10. }

有关更多信息,请参阅本教程

展开查看全部

相关问题