我将数据以速率传输到HDFS文件。我在它上面构建了一个外部蜂巢表。数据具有时间戳列和int列。 每隔5分钟,将添加一行。
我有一个JDBC程序,如果int列值超出限制,则需要检查最后添加的行。我以为我只会为新时间戳写一个搜索查询,获取行并检查其int列值。但是,它遍历整个表格以搜索最后一行。
我可以在timestamp列上创建索引。有没有其他方法可以检索最近添加的数据,以便性能不会下降?
答案 0 :(得分:1)
按日期(比如load_date)对表进行分区,您可以使用date()
函数从时间戳字段派生。当然,您还需要修改插入新数据的过程或将其放在正确的load_date位置+在外部表上执行alter table add partition
或recover partitions如果它直接将文件加载到表位置。
然后按load_date + timestamp过滤以获取最后一条记录。它将仅查询最后一天的分区数据。