[
https://issues.apache.org/jira/browse/AVRO-667?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12910405#action_12910405
]
Scott Carey commented on AVRO-667:
----------------------------------
+1 on the current patch.
Yes, instanceof is orders of magnitude off of object construction, and several
times faster than the compareTo of two small strings.
If we are trying to optimize comparing GenericRecords for Hadoop there are
probably several other more significant things to change if we spent time
profiling or experimenting.
The benefit of marking Utf8 final is that we can guarantee that it uses Utf8
ordering and no subclasses do improper things. That may not be a big concern
however.
> GenericArray fails to compare with List. SpecificRecord compare gets
> ClassCastException
> ----------------------------------------------------------------------------------------
>
> Key: AVRO-667
> URL: https://issues.apache.org/jira/browse/AVRO-667
> Project: Avro
> Issue Type: Bug
> Affects Versions: 1.4.0
> Reporter: Scott Carey
> Assignee: Scott Carey
> Priority: Blocker
> Fix For: 1.4.1
>
> Attachments: AVRO-667.patch, AVRO-667.patch, AVRO-667.patch,
> AVRO-667.patch
>
>
> AVRO-637 is incomplete.
> I am unable to convert my SpecificRecord project to 1.4. It compiles, but
> unit tests get runtime exceptions.
> compareTo in GenericData does not handle List vs GenericArray and I get class
> cast exceptions.
> {noformat}
> java.lang.ClassCastException: java.util.ArrayList cannot be cast to
> org.apache.avro.generic.GenericArray
> at org.apache.avro.generic.GenericData.compare(GenericData.java:502)
> at org.apache.avro.specific.SpecificData.compare(SpecificData.java:190)
> at org.apache.avro.generic.GenericData.compare(GenericData.java:494)
> at org.apache.avro.specific.SpecificData.compare(SpecificData.java:190)
> at
> org.apache.avro.specific.SpecificRecordBase.compareTo(SpecificRecordBase.java:45)
> at
> org.apache.avro.specific.SpecificRecordBase.equals(SpecificRecordBase.java:35)
> at com.rr.eventdata.ViewRecord.equals(ViewRecord.java:350)
> at com.rr.eventdata.WriteStuffTest.main(WriteStuffTest.java:143)
> at
> com.rr.eventdata.WriteStuffTest.testReadWriteDataFile(WriteStuffTest.java:55)
> {noformat}
> Also, an array of string in SpecificRecord ends up as List<CharSequence>.
> However, it should be List<? extends CharSequence> or else you can't assign a
> List<String> to it.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.