如何在HDFS上保持平面文件与大型数据库表同步?

时间:2011-04-01 11:28:57

标签: hadoop hdfs sqoop

将HDFS上的平面文件与可能有行更新的大型数据库表保持同步的最佳方法是什么?

像sqoop这样的工具看起来很有用,因为它们允许从表中新增行的新行,但是我看不到处理行更新的简单方法。

我们可以使用哪些技术以高效的方式处理行更新?每晚倾倒整张桌子是我们宁愿避免的。

2 个答案:

答案 0 :(得分:1)

我更喜欢在mysql表中使用updated_at字段,以便每晚只获取更改的数据。之后我做了一个简单的map reduce来应用更改(合并)旧状态。

答案 1 :(得分:1)

以下是一些建议:

  • 使用DBInputFormat使数据库成为作业的输入,而不是让您担心同步的中间文件。如果MySQL成为瓶颈,你可以使用一些分布式/ NoSQL数据库。
  • 如果您仍想使用平面文件,则每晚只能转储MySQL中更改的行以及时间戳。编写一个Hadoop作业,仅输出每个唯一行的最新版本。