hadoop - 如何获取 hdfs 文件上最后添加的数据?

标签 hadoop jdbc hive mapreduce

我有数据以一定的速度传输到 HDFS 文件中。我有一个建立在它之上的外部配置单元表。 Data 有一个 timestamp 列和一个 int 列。 每 5 分钟,将添加一行。

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

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

最佳答案

按日期(例如 load_date)对表进行分区,您可以使用 date() 函数从时间戳字段中导出日期。当然,您还需要修改插入新数据的过程或将其放在正确的 load_date 位置 + 在外部表上执行 alter table add partitionrecover partitions如果它将文件直接加载到表位置。 然后按 load_date + timestamp 过滤以获取最后一条记录。它只会查询最后一天的分区数据。

关于hadoop - 如何获取 hdfs 文件上最后添加的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50577302/

相关文章:

hadoop - Apache Apex CLI 命令中 Shutdown-app 和 kill-app 的区别

algorithm - Hadoop Mapreduce,如何使用map reduce输出重写在映射器中输入的txt文件?

hadoop - 无法使用IP地址连接远程hiveserver2

python - 使用 Hive 的 TRANSFORM 命令在 Hadoop 表中写入 python 脚本的输出

hadoop - hive 中 ORDER BY 的替代方案

java - 将输入数据动态添加到 Hadoop Map-Reduce 作业?

Hadoop 流问题

java - JPA:应用程序必须提供 JDBC 连接

java - 如何使用 Java 更改数据库连接中的 MySQL 时区?

performance - Hive 联合所有效率和最佳实践