pig将如何生成大量的工作

pb3skfrl  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(306)

我正在处理一个饲料,以数以百万计的记录使用Pig。在从hdfs读取feed之后,我需要执行三个不同的“groupby”操作,然后合并所有这些操作的结果。假设不管关系的模式如何,联合都能很好地工作。现在我的问题是pig如何生成执行的dag,这三个groupby操作是否会并行执行。

kyxcudwk

kyxcudwk1#

清管器的加工步骤如下:
脚本解析
检查语法和引用的变量是否有效
型式检验
图式推理
检查自定义类(UDF)(示例化..等)
输出:一种规范的逻辑计划,是pig拉丁语句和逻辑运算符之间的一对一Map,以dag的形式排列。
逻辑优化器
逻辑计划通过逻辑优化器传递(例如:执行投影下推)
实物计划
优化后的逻辑计划转换为物理计划(每个逻辑运算符都有一个相应的物理等价项)
mapreduce方案及其优化
每个物理操作员将被分配到mapreduce阶段(map task或reduce task)。
创建mr计划后,将根据操作的性质执行进一步的优化。目标:最小化reduce阶段的数量
您可以使用explain检查生成的计划
关于第二个问题:
groupby操作强制执行reduce阶段,您可以为该阶段定义并行级别。默认情况下,如果未指定平行度,则通过以下公式计算异径管的数量:

min(maxReducersNumber, reducers)

哪里:
-maxReducerNumber可以由属性pig.exec.reducers.max设置(默认999)
-减速机=(totalinputfilesize/bytesperreducer)
-bytesperreducer可以通过属性pig.exec.reducers.bytes.per.reducer(默认值:1gb)设置,即:对于每1gb的输入数据,pig将分配一个新的reducer
有关parallel的更多信息,请参见:
-如何使用并行功能
-选择合适的平行度级别
-减速机估计器的源代码

相关问题