2

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

sqoop 之类的工具似乎很有用,因为它们允许从表中增量提取新行,但是我看不到处理行更新的简单方法。

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

4

2 回答 2

1

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

于 2011-04-01T11:58:20.820 回答
1

这里有几个建议:

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