首页 > 解决方案 > 如何获取 hdfs 文件上最后添加的数据?

问题描述

我有数据以一定的速度进入 HDFS 文件。我有一个建立在它上面的外部蜂巢表。数据有一个时间戳列和一个 int 列。每 5 分钟,将添加一行。

我有一个 JDBC 程序,如果 int 列值超过限制,它需要检查最后添加的行。我想我会为新的时间戳编写一个搜索查询,获取行并检查它的 int 列值。但是,它会遍历整个表来搜索最后附加的行。

我可以在时间戳列上创建索引。有没有其他方法可以检索最近添加的数据以使性能不会下降?

标签: hadoopjdbchivemapreduce

解决方案


按日期(比如 load_date)对表进行分区,您可以使用date()函数从时间戳字段中派生该日期。当然,您还需要修改插入新数据的过程,或者将其放在正确的 load_date 位置 +alter table add partition在外部表上执行,或者如果将文件直接加载到表位置,则恢复分区。然后通过 load_date + timestamp 过滤得到最后一条记录。它将仅查询最后一天的分区数据。


推荐阅读