配置单元更新lastaccesstime

czfnxgou  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(251)

我想更新hive表上的lastaccesstime,在google进入web之后,我得到了一个解决方案:

set hive.exec.pre.hooks = org.apache.hadoop.hive.ql.hooks.UpdateInputAccessTimeHook$PreExec;

但如果我有两个数据库a和b,即配置单元sql:

set hive.exec.pre.hooks = 
    org.apache.hadoop.hive.ql.hooks.UpdateInputAccessTimeHook$PreExec;
    use A;
    insert overwrite A.xxx
    select  c1,c2 from B.xxx;

Hive把我送回来了
org.apache.hadoop.hive.ql.metadata.invalidtableexception(找不到表b.

cfh9epnr

cfh9epnr1#

要检索表的“lastaccesstime”,请通过配置单元shell运行以下命令,用相关值替换[database\u name]和[table\u name]。

use [database_name];
    show table extended like '[table_name]';

这将返回几个度量,包括自epoch以来经过的毫秒数(而不是秒数)。要将该数字格式化为表示当前系统时区中该时刻的时间戳的字符串,请从该数字中删除最后三位数字,并通过以下命令运行该数字:

select from_unixtime([last_access_time]);
ar7v8xwq

ar7v8xwq2#

我正好想要同样的效果。花点时间,最终成功;你的方法是对的,只是价值观;

<property>
   <name>hive.security.authorization.sqlstd.confwhitelist.append</name>
   <value>hive\.exec\.pre\.hooks</value>
</property>

<property>
   <name>hive.exec.pre.hooks</name>
  <value>org.apache.hadoop.hive.ql.hooks.UpdateInputAccessTimeHook$PreExec</value>
</property>

如果仍然不工作,可能您的配置单元有一个错误,对于非当前数据库,hive-18060updateinputaccesstimehook失败。在cdh5.15 cdh 5.15.0发行说明中修复了使用cdh的问题。

相关问题