hadoop - 如何获取 hdfs 文件上最后添加的数据?
问题描述
我有数据以一定的速度进入 HDFS 文件。我有一个建立在它上面的外部蜂巢表。数据有一个时间戳列和一个 int 列。每 5 分钟,将添加一行。
我有一个 JDBC 程序,如果 int 列值超过限制,它需要检查最后添加的行。我想我会为新的时间戳编写一个搜索查询,获取行并检查它的 int 列值。但是,它会遍历整个表来搜索最后附加的行。
我可以在时间戳列上创建索引。有没有其他方法可以检索最近添加的数据以使性能不会下降?
解决方案
按日期(比如 load_date)对表进行分区,您可以使用date()
函数从时间戳字段中派生该日期。当然,您还需要修改插入新数据的过程,或者将其放在正确的 load_date 位置 +alter table add partition
在外部表上执行,或者如果将文件直接加载到表位置,则恢复分区。然后通过 load_date + timestamp 过滤得到最后一条记录。它将仅查询最后一天的分区数据。
推荐阅读
- directory - PowerBI 工作区不可见
- string - @"String"@ 语法在 powershell 中是什么意思
- c# - 删除 [ResponseCache]?ASP.NET MVC 核心
- sql - Oracle SQL 查询中的条件 where 子句不起作用
- zfs - ZFS 在没有指定快照的数据集上发送递归失败
- javascript - 如何编写异步函数
- amazon-web-services - Docker-compose 不会在 Sagemaker 的笔记本实例上启动
- tensorflow - TensorFlow 多标签准确度指标
- excel - 每 12 个月重新开具发票
- c# - C#类的动态调用方法