gpt4 book ai didi

Hadoop- hive : Delete data which is older than specified no of days

转载 作者:可可西里 更新时间:2023-11-01 14:15:54 24 4
gpt4 key购买 nike

我正在从事一个电信项目,该项目使用 Hadoop - hive 进行数据分析。一天,我们将获得数百万条记录。在指定的天数之后,我们需要删除旧数据,因为我们没有存储容量。删除记录的最佳方法是什么?

附加信息:

这些配置单元表将有一个包含填充日期的列。

最佳答案

我认为您的用例非常适合在 Hive 表中使用“日”分区。如果“天”只是一列,那么维护和清理表格将变得困难。

分区在 Hive 中的真正含义是每个“天”都有一个目录

例如:

create table mytable (
...
) partitioned by (day string)

因此,当您添加数据时,您将在 HDFS 中拥有例如以下结构:

/user/hive/warehouse/mytable/day=2013-01-10
/user/hive/warehouse/mytable/day=2013-01-11
...

在每个分区中,您都会有当天的内容。

然后删除旧数据变得微不足道,例如,您可以有一个每天运行的 cron 作业并删除 x 天前的数据(例如使用命令 date --date '30 days ago' +\%Y -\%m-\%d) 并简单地执行以下命令:

hadoop fs -rmr -skiptrash /user/hive/warehouse/mytable/day=`date --date '30 days ago' +\%Y-\%m-\%d`

此时,如果您执行 show partitions mytable,您的 Hive 表中仍会有您的分区,但对您删除数据的分区的任何查询都不会返回任何内容。如果你想真正删除 metastore 中的分区,你必须使用以下命令:

ALTER TABLE mytable DROP PARTITION (day='xxxx-xx-xx');

一段时间以来,我一直在成功地使用一种非常相似的模式,而且效果很好。

关于Hadoop- hive : Delete data which is older than specified no of days,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14273772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com