我正在处理一个饲料,以数以百万计的记录使用Pig。在从hdfs读取feed之后,我需要执行三个不同的“groupby”操作,然后合并所有这些操作的结果。假设不管关系的模式如何,联合都能很好地工作。现在我的问题是pig如何生成执行的dag,这三个groupby操作是否会并行执行。
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的更多信息,请参见:-如何使用并行功能-选择合适的平行度级别-减速机估计器的源代码
1条答案
按热度按时间kyxcudwk1#
清管器的加工步骤如下:
脚本解析
检查语法和引用的变量是否有效
型式检验
图式推理
检查自定义类(UDF)(示例化..等)
输出:一种规范的逻辑计划,是pig拉丁语句和逻辑运算符之间的一对一Map,以dag的形式排列。
逻辑优化器
逻辑计划通过逻辑优化器传递(例如:执行投影下推)
实物计划
优化后的逻辑计划转换为物理计划(每个逻辑运算符都有一个相应的物理等价项)
mapreduce方案及其优化
每个物理操作员将被分配到mapreduce阶段(map task或reduce task)。
创建mr计划后,将根据操作的性质执行进一步的优化。目标:最小化reduce阶段的数量
您可以使用explain检查生成的计划
关于第二个问题:
groupby操作强制执行reduce阶段,您可以为该阶段定义并行级别。默认情况下,如果未指定平行度,则通过以下公式计算异径管的数量:
哪里:
-maxReducerNumber可以由属性pig.exec.reducers.max设置(默认999)
-减速机=(totalinputfilesize/bytesperreducer)
-bytesperreducer可以通过属性pig.exec.reducers.bytes.per.reducer(默认值:1gb)设置,即:对于每1gb的输入数据,pig将分配一个新的reducer
有关parallel的更多信息,请参见:
-如何使用并行功能
-选择合适的平行度级别
-减速机估计器的源代码