You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@pig.apache.org by Jie Li <ji...@cs.duke.edu> on 2012/06/21 20:14:09 UTC

Some proposals for Pig performance optimization

Hello everyone,

I compiled a list of possible optimizaiton for Pig's performance.

https://cwiki.apache.org/confluence/display/PIG/Pig+Performance+Optimization

As I haven't been very familiar with the codebase, I'm likely to
underestimate the complexity involved, so any input will be
appreciated.

Thanks,
Jie

Re: Some proposals for Pig performance optimization

Posted by Jie Li <ji...@cs.duke.edu>.
Thanks Thejas for the comments! See my answers inline.

> 1. Order-by
> The comparison against hive order-by is misleading. Hive does not do total
> ordering, unless you use a single reducer.
> But yes, in case of pig, the sampling phase is unnecessary, if you use a
> single reducer. A single reducer can make sense if the data you are sorting
> is small. I agree that it makes sense to remove the sampling phase in pig in
> such cases.

Yes the environment set up uses only 1GB data, so there is only 1
reducer for the order-by.  I've also updated the doc that Hive always
uses 1 reducer for the order-by.

I'll also make sure Pig/Hive use same number of maps/reduces if
possible and update the doc.

> 2. Lazy type conversion
> Can you add a note about how many records are there in input vs output ?
> In this example, we can improve by using the logical optimizer, so only
> necessary parts are typecast before the filter.
>

I've purposely filtered out all the input records. From the logical
plan, the filter is not pushed above the foreach, which can be a
separate issue that need investigating. Therefore, each record is
fully deserialized and then thrown away.

> One problem in pig is that it uses java objects like Integer, String etc
> which are final types. Which means that we can't create a subclass by that
> delays the conversion until it actually gets used.  The types are part of
> the udf interface. We should consider if we want to do something like this,
> when we add new udf interfaces.
>
> Some thoughts on serialization/deserialization improvements that i had
> written earlier - http://wiki.apache.org/pig/AvoidingSedes
>

Thanks for sharing these thoughts! I'll incorporate it into the doc
and discuss more details later.

Jie

> Thanks,
> Thejas
>
>
>
>
>
>
>
> On 6/21/12 11:14 AM, Jie Li wrote:
>>
>> Hello everyone,
>>
>> I compiled a list of possible optimizaiton for Pig's performance.
>>
>>
>> https://cwiki.apache.org/confluence/display/PIG/Pig+Performance+Optimization
>>
>> As I haven't been very familiar with the codebase, I'm likely to
>> underestimate the complexity involved, so any input will be
>> appreciated.
>>
>> Thanks,
>> Jie
>
>

Re: Some proposals for Pig performance optimization

Posted by Thejas Nair <th...@hortonworks.com>.
bcc'ing the user list.

1. Order-by
The comparison against hive order-by is misleading. Hive does not do 
total ordering, unless you use a single reducer.
But yes, in case of pig, the sampling phase is unnecessary, if you use a 
single reducer. A single reducer can make sense if the data you are 
sorting is small. I agree that it makes sense to remove the sampling 
phase in pig in such cases.

2. Lazy type conversion
Can you add a note about how many records are there in input vs output ?
In this example, we can improve by using the logical optimizer, so only 
necessary parts are typecast before the filter.

One problem in pig is that it uses java objects like Integer, String etc 
which are final types. Which means that we can't create a subclass by 
that delays the conversion until it actually gets used.  The types are 
part of the udf interface. We should consider if we want to do something 
like this, when we add new udf interfaces.

Some thoughts on serialization/deserialization improvements that i had 
written earlier - http://wiki.apache.org/pig/AvoidingSedes

Thanks,
Thejas






On 6/21/12 11:14 AM, Jie Li wrote:
> Hello everyone,
>
> I compiled a list of possible optimizaiton for Pig's performance.
>
> https://cwiki.apache.org/confluence/display/PIG/Pig+Performance+Optimization
>
> As I haven't been very familiar with the codebase, I'm likely to
> underestimate the complexity involved, so any input will be
> appreciated.
>
> Thanks,
> Jie


Re: Some proposals for Pig performance optimization

Posted by Thejas Nair <th...@hortonworks.com>.
bcc'ing the user list.

1. Order-by
The comparison against hive order-by is misleading. Hive does not do 
total ordering, unless you use a single reducer.
But yes, in case of pig, the sampling phase is unnecessary, if you use a 
single reducer. A single reducer can make sense if the data you are 
sorting is small. I agree that it makes sense to remove the sampling 
phase in pig in such cases.

2. Lazy type conversion
Can you add a note about how many records are there in input vs output ?
In this example, we can improve by using the logical optimizer, so only 
necessary parts are typecast before the filter.

One problem in pig is that it uses java objects like Integer, String etc 
which are final types. Which means that we can't create a subclass by 
that delays the conversion until it actually gets used.  The types are 
part of the udf interface. We should consider if we want to do something 
like this, when we add new udf interfaces.

Some thoughts on serialization/deserialization improvements that i had 
written earlier - http://wiki.apache.org/pig/AvoidingSedes

Thanks,
Thejas






On 6/21/12 11:14 AM, Jie Li wrote:
> Hello everyone,
>
> I compiled a list of possible optimizaiton for Pig's performance.
>
> https://cwiki.apache.org/confluence/display/PIG/Pig+Performance+Optimization
>
> As I haven't been very familiar with the codebase, I'm likely to
> underestimate the complexity involved, so any input will be
> appreciated.
>
> Thanks,
> Jie