-1

当我们使用 Hadoop 连接到像 MYSQL 这样的 RDBMS 时,我们通常会从数据库中获取一条记录到一个用户定义的类中,该类扩展了 DBWritable 和 Writable。如果我们的 SQL 查询生成 N 条记录作为输出,那么将记录读入用户定义的类的操作会执行 N 次。有没有一种方法可以让更多的记录同时进入映射器,而不是每次只有 1 条记录?

4

1 回答 1

1

如果我理解正确,您认为 Hadoop 会导致 NSELECT语句在幕后。那不是真的。正如您在DBInputFormat's source中看到的那样,它根据 Hadoop 认为合适的内容创建行块。

显然,每个映射器都必须执行一个查询来获取一些数据以供其处理,并且它可能会重复执行此操作,但这仍然远不及表中的行数。

但是,如果性能下降,最好将数据转储到 HDFS / Hive 并从那里处理。

于 2013-04-01T17:57:26.840 回答