当我们使用 Hadoop 连接到像 MYSQL 这样的 RDBMS 时,我们通常会从数据库中获取一条记录到一个用户定义的类中,该类扩展了 DBWritable 和 Writable。如果我们的 SQL 查询生成 N 条记录作为输出,那么将记录读入用户定义的类的操作会执行 N 次。有没有一种方法可以让更多的记录同时进入映射器,而不是每次只有 1 条记录?
问问题
127 次
1 回答
1
如果我理解正确,您认为 Hadoop 会导致 NSELECT
语句在幕后。那不是真的。正如您在DBInputFormat
's source中看到的那样,它根据 Hadoop 认为合适的内容创建行块。
显然,每个映射器都必须执行一个查询来获取一些数据以供其处理,并且它可能会重复执行此操作,但这仍然远不及表中的行数。
但是,如果性能下降,最好将数据转储到 HDFS / Hive 并从那里处理。
于 2013-04-01T17:57:26.840 回答