我想在Hive表中创建一个列,当前时间戳为纳秒。我怎么能在插入数据时这样做。
当前的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;