q1-为清管器作业运行的Map器数量是否仅取决于输入拆分的数量?问题2:Map程序的数量是否取决于我们在pig脚本中使用的语句。例如,foreach、group、join、filter?如果我有128MB的输入文件,它将只运行一个Map器,而不考虑我在pig中使用的语句。问题3:合路器什么时候为清管器运行?问题4:在哪种情况下,合并器在map reduce作业中多次运行?
mklgxw1f1#
问题1。是和否,是在任何阶段运行Map程序的数量取决于输入拆分的数量。但是不能保证只有一个阶段,因此执行任何查询的Map程序的总数实际上取决于查询本身,而查询本身也回答了您的2个问题(q2)。我们举一个例子,假设您有一个数据集,其中包含50个国家的人口,在一个输入slpit中,您需要编写一个查询,这样您就需要有3个国家的名称,4和5人口最多,但他们应该出现在相反的顺序,这意味着5人口最多的国家应该出现在4之前,以此类推。现在,当您在pig中为它编写查询时,map reduce作业可能会按以下方式运行以给出结果。第一个map reduce作业将按降序对国家进行排序,然后保存结果。现在,在第一个map reduce结果上将运行第二个map reduce,其中它将选择3,4和5人口最多的国家并保存它。然后在第二个Map缩减的结果上,它运行第三个Map缩减作业,并再次按所需顺序对它们进行排序,并显示最终结果。本例的主要优点是,即使有一个输入拆分,但运行的Map程序的数目是3(我必须采取的方法来解决这个例子是非常幼稚的,有可能的方法来做所有这些任务在单一的Map减少工作,我很有信心这样的查询在Pig将采取单一的mr工作。但这里的重点是从一个Angular 了解pig查询可能如何运行,这就是为什么我运行了3个maps reduce作业。)q3和q4也有一个类似的答案,比如1和2,这完全取决于您的查询。但是我确信开发人员为这些查询编写的map-reduce程序经过了优化,以使它们消耗最少的资源。
1条答案
按热度按时间mklgxw1f1#
问题1。是和否,是在任何阶段运行Map程序的数量取决于输入拆分的数量。但是不能保证只有一个阶段,因此执行任何查询的Map程序的总数实际上取决于查询本身,而查询本身也回答了您的2个问题(q2)。
我们举一个例子,假设您有一个数据集,其中包含50个国家的人口,在一个输入slpit中,您需要编写一个查询,这样您就需要有3个国家的名称,4和5人口最多,但他们应该出现在相反的顺序,这意味着5人口最多的国家应该出现在4之前,以此类推。现在,当您在pig中为它编写查询时,map reduce作业可能会按以下方式运行以给出结果。
第一个map reduce作业将按降序对国家进行排序,然后保存结果。现在,在第一个map reduce结果上将运行第二个map reduce,其中它将选择3,4和5人口最多的国家并保存它。然后在第二个Map缩减的结果上,它运行第三个Map缩减作业,并再次按所需顺序对它们进行排序,并显示最终结果。本例的主要优点是,即使有一个输入拆分,但运行的Map程序的数目是3(我必须采取的方法来解决这个例子是非常幼稚的,有可能的方法来做所有这些任务在单一的Map减少工作,我很有信心这样的查询在Pig将采取单一的mr工作。但这里的重点是从一个Angular 了解pig查询可能如何运行,这就是为什么我运行了3个maps reduce作业。)
q3和q4也有一个类似的答案,比如1和2,这完全取决于您的查询。
但是我确信开发人员为这些查询编写的map-reduce程序经过了优化,以使它们消耗最少的资源。