Skip to content

Latest commit

 

History

History
32 lines (23 loc) · 1.22 KB

File metadata and controls

32 lines (23 loc) · 1.22 KB


项目四 JDBC增量追加到HDFS(定时)

问题

外部系统定时向 MySQL 中插入数据,每 5 分钟插入一次,每次大约 20 万条。 需要把 MySQL 中的数据实时导入到 HDFS 中存储


#### 思路
  • 从 MySQL 读取数据到 HDFS使用 jdbc 访问 MySQL,结果保存在 ResultSet 中。

难点

  1. 如何判断新增数据

每一次读取数据插入到 HDFS 后,新的数据又插入到 MySQL 中。如何判断新 增加的数据哪?

  • 如果有自增的 id 或者时间戳,可以保存每一次读取的所有记录中最后的 id 或者 时间戳。建议保持到 redis 中。因为 redis 负责持久化,读写效率高。
  • 如果没有自增的 id 或者时间戳,可以使用 sql 中的 limit m,n。在这里,m 表示从 表中开头跳过 m 行,n 表示一次读取多少行。在这里,每一次读取的记录条数累 加到 m 中,保存到 redis 中。下一次查询的时候,m 就是原来已经读取过的记录 条数。n 取多少合适?因为不知道新插入的记录有多少条,就假设无限大,设定 为 999999999。
  1. 定时执行 使用 crontab 定时执行。 设定格式 */3 * * * * shell 脚本