当我们使用Hadoop连接到像MYSQL这样的RDBMS时,我们通常会从DB获取一条记录到用户定义的类中,该类扩展了DBWritable和Writable。如果我们的SQL查询生成N条记录作为输出,那么将记录读取到用户定义的类中的行为将完成N次。有没有一种方法可以让我同时在映射器中获得更多的记录,而不是每次都有1条记录?
答案 0 :(得分:1)
如果我理解正确,您认为Hadoop会引发N SELECT
个陈述。事实并非如此。正如您在DBInputFormat
's source中所看到的,它根据Hadoop认为合适的内容创建了大量行。
显然,每个映射器都必须执行一个查询来获取一些数据才能进行处理,并且它可能会重复执行,但这仍然无法接近表中的行数。
但是,如果性能下降,您可能最好将数据转储到HDFS / Hive并从那里进行处理。