在Hive中创建具有当前时间戳(以纳秒为单位)的新列

问题描述 投票:1回答:1

我想在Hive表中创建一个列,当前时间戳为纳秒。我怎么能在插入数据时这样做。

sql hadoop hive hiveql unix-timestamp
1个回答
1
投票

当前的current_timestamp在蜂巢中起作用,不会在纳秒内给出时间。

但是你总是可以使用hive UDF来处理纳秒时间戳的create your own functions

下面是UDF的示例,它将返回纳秒时间的long值。

import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.hive.ql.udf.UDFType;

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

    public long evaluate() {
        return System.nanoTime();
    }

}

使用上面的Java代码(比如tonanotime.jar)创建一个Jar并添加jar来创建udf函数以返回当前的nano时间。

ADD JAR /home/amit/tonanotime.jar;
create TEMPORARY FUNCTION toNanoTime AS 'NanoTimeUdf';

现在,toNanoTime函数可用,您可以在select查询中使用插入到新表中,例如:例如

insert into table select toNanoTime() from other_table;
© www.soinside.com 2019 - 2024. All rights reserved.