mysql可以自动记录创建的时间戳和更新的时间戳。Hive提供类似的机制吗?如果没有,实现此功能的最佳方法是什么?
khbbv19g1#
Hive不提供这种机制。您可以通过在选择中使用自定义项来实现这一点: from_unixtime(unix_timestamp()) as created_at . 注意:这将在每个Map器或缩减器中执行,并可能返回不同的值。如果所有数据集都需要相同的值(对于1.2.0之前的配置单元版本),请将该变量传递给脚本,并在内部使用它作为: '${hiveconf:created_at}' as created_at 更新: current_timestamp 返回查询求值开始时的当前时间戳(从Hive1.2.0开始)。同一查询中当前时间戳的所有调用都返回相同的值。 unix_timestamp() 以秒为单位获取当前unix时间戳。此函数是不确定的,并阻止查询的适当优化-自2.0以来,为了支持当前的\u timestamp常量,此函数一直被弃用。所以,它不是一个函数,而是一个常数!参见以下文档:https://cwiki.apache.org/confluence/display/hive/languagemanual+udf对于配置单元查询,重写表或分区或插入时,最好使用当前的\u时间戳,因为所有文件都在重写,而不是记录,因此 created_at 时间戳应该相同。
from_unixtime(unix_timestamp()) as created_at
'${hiveconf:created_at}' as created_at
current_timestamp
unix_timestamp()
created_at
1条答案
按热度按时间khbbv19g1#
Hive不提供这种机制。您可以通过在选择中使用自定义项来实现这一点:
from_unixtime(unix_timestamp()) as created_at
. 注意:这将在每个Map器或缩减器中执行,并可能返回不同的值。如果所有数据集都需要相同的值(对于1.2.0之前的配置单元版本),请将该变量传递给脚本,并在内部使用它作为:'${hiveconf:created_at}' as created_at
更新:current_timestamp
返回查询求值开始时的当前时间戳(从Hive1.2.0开始)。同一查询中当前时间戳的所有调用都返回相同的值。unix_timestamp()
以秒为单位获取当前unix时间戳。此函数是不确定的,并阻止查询的适当优化-自2.0以来,为了支持当前的\u timestamp常量,此函数一直被弃用。所以,它不是一个函数,而是一个常数!参见以下文档:https://cwiki.apache.org/confluence/display/hive/languagemanual+udf对于配置单元查询,重写表或分区或插入时,最好使用当前的\u时间戳,因为所有文件都在重写,而不是记录,因此
created_at
时间戳应该相同。