Thanks Gang and Dongjoon for sharing your thoughts. It does not feel like we 
have enough interest/inputs to propose a change to the default.
I will try and reengage this discussion once I have further details on what 
specifically is causing this difference between ORC and Parquet.

Thanks,
Pavan

> On Mar 16, 2023, at 6:34 PM, Gang Wu <ust...@gmail.com> wrote:
> 
> I guess the default 64M is to align the HDFS block size?
> 
> I did similar benchmarks before and agree the default stripe size is too
> small to win.
> 
> Generally we use 128M in production to avoid small stripes. Otherwise we
> may get small stripes, especially when many columns enable dictionary
> encoding.
> 
> Best,
> Gang
> 
> On Fri, Mar 17, 2023 at 1:41 AM Pavan Lanka <pla...@apple.com.invalid>
> wrote:
> 
>> Thanks Dongjoon, please see my responses below.
>> 
>>> Is the benchmark a part of the Apache ORC bench module?
>>> 
>>> Or, could you share the detail of the benchmark and how to reproduce it
>> in
>>> the community?
>> 
>> The test we were running was on some actual data and not part of the bench
>> module. It will take sometime for me to try and add that as a bench test
>> which I will do (hopefully soon), in the meantime I was hoping to hear if
>> others have seen anything similar or what stripe size values they are using.
>> 
>>> BTW, it's one of the user configurations. We can change it at Apache ORC
>>> 2.0 or add simple documentation.
>> Normally most users are just picking defaults like in this case the
>> feedback received was that Parquet performs so much better than ORC. Based
>> on the feedback that we receive we can see if we should increase the
>> default value. Documentation also helps as guidance until we are able to
>> change the default.
>> 
>> Regards,
>> Pavan
>> 
>> 
>>> On Mar 16, 2023, at 10:29 AM, Dongjoon Hyun <dongjoon.h...@gmail.com>
>> wrote:
>>> 
>>> Thank you for raising this issue, Pavan.
>>> 
>>> Is the benchmark a part of the Apache ORC bench module?
>>> 
>>> Or, could you share the detail of the benchmark and how to reproduce it
>> in
>>> the community?
>>> 
>>> BTW, it's one of the user configurations. We can change it at Apache ORC
>>> 2.0 or add simple documentation.
>>> 
>>> Bests.
>>> Dongjoon.
>>> 
>>> 
>>> On Thu, Mar 16, 2023 at 10:22 AM Pavan Lanka <pla...@apple.com.invalid>
>>> wrote:
>>> 
>>>> Hi,
>>>> 
>>>> I wanted to call out one observation we have seen when performing some
>>>> benchmarks on ORC.
>>>> I remember there was a time when the default stripe size was 256MB now
>> we
>>>> have the default at 64MB.
>>>> 
>>>> We see big penalty of staying with the default stripe size of 64MB
>>>> especially when you compare with the default rowgroup size of 128MB from
>>>> Parquet. Given that the manner in which limit is enforced is also
>> different
>>>> between ORC (memory size) and Parquet (serialized size except for the
>>>> current active pages which is memory size) it gives us a much larger
>>>> magnification.
>>>> 
>>>> For the same data we ran ORC and Parquet with default configurations we
>>>> see that ORC generates 28K stripes to Parquet 3.5K row groups, this is
>> also
>>>> reflected in the performance difference, Parquet operation (filtered
>> read
>>>> of data) took approximately half the cpu seconds as compared to ORC.
>>>> 
>>>> Once we adjust the stripe size in ORC to 512MB that matches(roughly
>>>> equivalent serialized size of the atomic unit in both) with 128MB row
>> group
>>>> size in parquet we see the following:
>>>> * the number of stripes and number of row groups are roughly equivalent
>>>> * the cpu seconds used for the operation are roughly the same
>>>> 
>>>> With that background. I wanted to check on what the rationale is in
>> having
>>>> the default stripe size at 64MB. I see from the commit history this is
>>>> inherited from Hive.
>>>> It will be great to get some context around the value of 64MB as the
>>>> default and would we be with a higher default for the same.
>>>> 
>>>> Please share your thoughts.
>>>> 
>>>> Thanks,
>>>> Pavan
>> 
>> 

Reply via email to