sql—在配置单元中的nano secods中创建具有当前时间戳的新列

yhxst69z  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(436)

我想在配置单元表中创建一列,当前时间戳以纳秒为单位。如何在插入数据时做到这一点。?

q3qa4bjr

q3qa4bjr1#

电流 current_timestamp 在Hive中运行,不会以纳秒为单位给出时间。
但是您可以使用hiveudf创建自己的函数来处理纳秒时间戳。
下面是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;

相关问题