INSERT OVERWRITE不删除项,不工作



我在Hive中有一个外部表名为" ddb_betaaccounthhistory "链接到DynamoDB表。

模式是:

CREATE EXTERNAL TABLE ddb_betaaccounthistory (
customer_id STRING,
date_action_id STRING,
`date` BIGINT,
action STRING,
client STRING,
ddbkmsig BINARY,
action_description BINARY,
reason STRING
time_to_live BIGINT)
STORED BY ...

time_to_live在某些行中有一些NULL字段,因为它没有完全填充。

我试图删除所有带有"日期"的项目。属性:1586551523,比这个时间戳早18个月,即2020年4月10日,并保留此日期之后的所有项。

我已经尝试了这个查询。根据我的理解,这个hive查询应该保留在这个unix时间戳1586551523之后创建的项目,并删除其他所有项目:

INSERT OVERWRITE TABLE ddb_betaaccounthistory
SELECT * FROM ddb_betaaccounthistory
WHERE `date` > 1586551523;

我也试过了,它仍然没有从表中删除任何东西。

INSERT OVERWRITE TABLE ddb_betaaccounthistory
SELECT * FROM ddb_betaaccounthistory
WHERE `date` > unix_timestamp() - 47340000;

Date格式化为unix时间戳。

运行INSERT OVERWRITE语句后,外部表ddb_betaaccounthhistory中的项数保持不变。并且我的DynamoDB表在查询之后没有删除任何项。

当我运行hive查询时,我已经检查了确实有写在我的Dynamo表上被消耗,所以我知道它被正确地链接到Dynamo表。

我的hive查询有问题吗?我不知道为什么INSERT OVERWRITE不从我的表中删除项。

你可以试试吗

INSERT OVERWRITE TABLE ddb_betaaccounthistory
SELECT * FROM ddb_betaaccounthistory
WHERE  unix_timestamp(`date`)> 1586551523

我认为列日期是一个时间戳数据类型,您需要转换为unix时间进行比较。

相关内容

  • 没有找到相关文章

最新更新