Yin Huai created SPARK-9611:
-------------------------------

             Summary: 
UnsafeFixedWidthAggregationMap.destructAndCreateExternalSorter will add an 
empty entry to if the map is empty.
                 Key: SPARK-9611
                 URL: https://issues.apache.org/jira/browse/SPARK-9611
             Project: Spark
          Issue Type: Sub-task
          Components: SQL
            Reporter: Yin Huai
            Assignee: Yin Huai
            Priority: Blocker


There are a few corner cases related to the destructAndCreateExternalSorter 
(class UnsafeKVExternalSorter) returned by UnsafeFixedWidthAggregationMap.

1. The constructor of UnsafeKVExternalSorter tries to first create a 
UnsafeInMemorySorter based on the BytesToBytesMap of 
UnsafeFixedWidthAggregationMap. However, when there is no entry in the map, 
UnsafeInMemorySorter will throw an AssertionError because we are using the size 
of map (0 at here) as the initialSize of UnsafeInMemorySorter, which is not 
allowed.

2. Once we fixes the first problem, when we use UnsafeKVExternalSorter's 
KVSorterIterator loads data back, you can find there is one extra records, 
which is an empty record.

3. The next method of the KVSorterIterator in UnsafeKVExternalSorter does not 
handle empty records well. If the length of a record is 0, the calculated 
length of value will be -4, which causes a NegativeArraySizeException.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to