1

我将 UDF 编写为流:

  package com.test;
    import org.apache.hadoop.hive.ql.exec.UDF;
    import org.apache.hadoop.io.Text;

    public class Lower extends UDF {
        public Text evaluate(final Text s) {
            if (s == null) {
                return null;
            }
            return new Text(s.toString().toLowerCase());
        }
    }

然后我通过 Eclipse 导出这个测试项目的 jar(udftest.jar)。之后,我udftest.jar在 hive 中添加 jar:

hive command: add jar udftest.jar;   
hive command: create temporary function my_lower as 'com.test.Lower';
hive command: Executing command:  create temporary function my_lower as 'com.test.Lower'

执行失败!

Failed: Error occurred during execution.
Detail message: FAILED: Execution Error, return code [-101] (unknow error) from org.apache.hadoop.hive.ql.exec.FunctionTask

我不知道为什么!我搜索互联网但没有处理这个问题!

4

1 回答 1

1

我发现为什么我不能创建临时函数(它已经困扰了好几天了!):因为我使用的 Java 版本是 1.7,但 hive 只支持 1.6!

于 2014-12-08T12:01:28.110 回答