apache / orc

Apache ORC - the smallest, fastest columnar storage for Hadoop workloads
https://orc.apache.org/
Apache License 2.0
665 stars 477 forks source link

ORC-1696: Fix ClassCastException when reading avro decimal type in bechmark #1898

Closed cxzl25 closed 2 months ago

cxzl25 commented 2 months ago

What changes were proposed in this pull request?

This PR aims to fix ClassCastException when reading avro decimal type in bechmark.

Why are the changes needed?

ORC-1191 Forcing object to double, but object type is ByteBuffer, which causes scan to fail.

 java -jar core/target/orc-benchmarks-core-*-uber.jar scan data
Exception in thread "main" java.lang.ClassCastException: class java.nio.HeapByteBuffer cannot be cast to class java.lang.Double (java.nio.HeapByteBuffer and java.lang.Double are in module java.base of loader 'bootstrap')
    at org.apache.orc.bench.core.convert.avro.AvroReader$DecimalConverter.convert(AvroReader.java:204)
    at org.apache.orc.bench.core.convert.avro.AvroReader.nextBatch(AvroReader.java:69)
    at org.apache.orc.bench.core.convert.ScanVariants.run(ScanVariants.java:92)
    at org.apache.orc.bench.core.Driver.main(Driver.java:64)

How was this patch tested?

local test

 java -jar core/target/orc-benchmarks-core-*-uber.jar scan data

output

data/generated/taxi/avro.snappy rows: 22758236 batches: 22225

Was this patch authored or co-authored using generative AI tooling?

No

dongjoon-hyun commented 2 months ago

Merged to main/2.0/1.9/1.8/1.7.