如何在Hive中记录created_at和updated_at时间戳?

时间:2016-12-13 19:07:07

标签: sql hive hiveql

MySQL can automatically record created_at and updated_at timestamps. Hive是否提供类似的机制?如果没有,那么实现此功能的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

Hive不提供这样的机制。您可以通过在select:from_unixtime(unix_timestamp()) as created_at中使用UDF来实现此目的。请注意,这将在每个映射器或缩减器中执行,并可能返回不同的值。如果所有数据集都需要相同的值(对于1.2.0之前的Hive版本),请将变量传递给脚本并在里面使用它:'${hiveconf:created_at}' as created_at

更新current_timestamp返回查询评估开始时的当前时间戳(从Hive 1.2.0开始)。同一查询中的current_timestamp的所有调用都返回相同的值。 unix_timestamp()以秒为单位获取当前的Unix时间戳。此函数是非确定性的,并且阻止了对查询的正确优化 - 自2.0以来,这已被弃用,而有利于CURRENT_TIMESTAMP常量。所以,它不是一个功能,它是一个常数! 请参阅此文档:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF

对于配置单元查询,当您重写表或分区或插入时,最好使用CURRENT_TIMESTAMP,因为无论如何都要重写所有文件,而不是记录,因此created_at时间戳应该相同。