【发布时间】:2017-05-19 00:51:19
【问题描述】:
我正在尝试获取 Hive 中表的最后修改时间戳。
【问题讨论】:
-
“最后修改的时间戳”是什么意思?那是一些元数据信息,即运行最后一个 ALTER 命令的时间?还是一些数据,即包含
Timestamp类型的列之一?
标签: hive timestamp last-modified
我正在尝试获取 Hive 中表的最后修改时间戳。
【问题讨论】:
Timestamp 类型的列之一?
标签: hive timestamp last-modified
请使用以下命令:
show TBLPROPERTIES table_name ('transient_lastDdlTime');
【讨论】:
从 Hive 表中获取 transient_lastDdlTime。
SHOW CREATE TABLE table_name;
然后将transient_lastDdlTime复制粘贴到下面的查询中以获取时间戳的值。
SELECT CAST(from_unixtime(your_transient_lastDdlTime_value) AS timestamp);
【讨论】:
在上述答案的帮助下,我为即将到来的开发人员创建了一个简单的解决方案。
time_column=`beeline --hivevar db=hiveDatabase --hivevar tab=hiveTable --silent=true --showHeader=false --outputformat=tsv2 -e 'show create table ${db}.${tab}' | egrep 'transient_lastDdlTime'`
time_value=`echo $time_column | sed 's/[|,)]//g' | awk -F '=' '{print $2}' | sed "s/'//g"`
tran_date=`date -d @$time_value +'%Y-%m-%d %H:%M:%S'`
echo $tran_date
我使用直线别名。确保正确设置别名并调用上述脚本。如果没有使用别名,则通过替换上面的 beeline 来使用完整的 beeline 命令(带有 jdbc 连接)。如果有任何问题,请在评论中留言。
【讨论】:
这里已经有一个关于如何查看配置单元表的最后修改日期的答案。我只是在分享如何检查配置单元表分区的最后修改日期。
连接到 hive 集群以运行 hive 查询。在大多数情况下,您可以通过运行 hive 命令简单地连接:hive
DESCRIBE FORMATTED <database>.<table_name> PARTITION(<partition_column>=<partition_value>);
在回复中你会看到类似这样的内容:transient_lastDdlTime 1631640957
SELECT CAST(from_unixtime(1631640957) AS timestamp);
【讨论】:
你可以通过执行得到时间戳
describe formatted table_name
【讨论】:
您可以执行以下命令并将transient_lastDdlTime 的输出从时间戳转换为日期。
它将给出表格的最后修改时间戳。
show create table TABLE_NAME;
【讨论】:
如果您使用 mysql 作为元数据,请使用以下...
select TABLE_NAME, UPDATE_TIME, TABLE_SCHEMA from TABLES where TABLE_SCHEMA = 'employees';
【讨论】: