当在像MYSQL这样的数据库上运行map reduce程序时,我只是想知道是否先在数据库上触发查询然后获得结果集,然后创建分割以由各个映射器操作,每个分割器都进行分割
答案 0 :(得分:0)
我相信它首先检索所有记录,然后创建逻辑分割,如您在setInput()
的签名中看到的那样:
public static void setInput(JobConf job,
Class<? extends DBWritable> inputClass,
String inputQuery,
String inputCountQuery)
它得到inputCountQuery
,这使得hadoop决定了映射器的数量以及每个映射器要处理的记录数。
另请阅读输入格式的限制部分here。