首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动增量UDF在配置单元中有效,但在Impala中返回null

问自动增量UDF在配置单元中有效,但在Impala中返回null
EN

Stack Overflow用户
提问于 2015-04-07 04:09:38
回答 1查看 749关注 0票数 1

我创建了一个创建自动增量值的java函数,我还创建了一个基于此函数的hive UDF,它在hive中工作得很好。我基于此函数创建了一个Impala UDF,它返回'null‘而不是自动递增整数。

下面是java的UDF代码:

代码语言:javascript
复制
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.hive.ql.udf.UDFType;

@UDFType(stateful = true)
public class AutoIncrementUDF extends UDF {

    int ctr;

    public int evaluate() {
        ctr++;
        return ctr;
    }
}

创建配置单元UDF:

代码语言:javascript
复制
create function autoincr as 'AutoIncrementUDF';

创建Impala UDF:

代码语言:javascript
复制
create function autoincr() returns int LOCATION '/user/acombs/AutoIncrementUDF.jar' symbol='AutoIncrementUDF';

在Hive和Impala中使用它:

代码语言:javascript
复制
select  autoincr() as testkey, * from mapfund 

任何帮助都是非常感谢的!谢谢你,安娜

EN

回答 1

Stack Overflow用户

发布于 2015-04-22 05:48:53

不幸的是,Impala不支持@UDFType注释或有状态Hive UDF的概念。我们将在我们的文档中添加一条注释,以使这一限制公之于众。

但是,如果您试图返回行号,则可以使用ROW_NUMBER()等分析窗口函数。

例如,

代码语言:javascript
复制
> select ROW_NUMBER() over (order by int_col) as testkey, int_col, float_col from alltypestiny;
+---------+---------+-------------------+
| testkey | int_col | float_col         |
+---------+---------+-------------------+
| 1       | 0       | 0                 |
| 2       | 0       | 0                 |
| 3       | 0       | 0                 |
| 4       | 0       | 0                 |
| 5       | 1       | 1.100000023841858 |
| 6       | 1       | 1.100000023841858 |
| 7       | 1       | 1.100000023841858 |
| 8       | 1       | 1.100000023841858 |
+---------+---------+-------------------+
Fetched 8 row(s) in 0.12s

有关更多详细信息,请参阅Impala Analytic Functions。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29478848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档