Finalization Code for a Partition Function - Aster Execution Engine

Teradata Aster® Developer Guide

Product
Aster Execution Engine
Release Number
7.00.02
Published
July 2017
Language
English (United States)
Last Update
2018-04-13
dita:mapPath
xnl1494366523182.ditamap
dita:ditavalPath
Generic_no_ie_no_tempfilter.ditaval
dita:id
ffu1489104705746
lifecycle
previous
Product Category
Software

If the SQL-MapReduce function is a partition function, multiple operateOnPartition calls get a handle to the same IMDC. The finalization code uses the method Drainable::drainOutputRows(). If any input partition is empty, operateOnSomeRows and operateOnPartition are never invoked; therefore, Teradata recommends creating an empty IMDC in drainOutputRows, as in the following code.

public void drainOutputRows(RowEmitter outputEmitter)
{
   InMemoryDataCollection IMDC_name =
      InMemoryDataCollectionRepository.getInMemoryDataCollection(imdcName_);
    
   if(IMDC_name == null)
   {
      myIMDC =
         InMemoryDataCollectionRepository.createInMemoryDataCollection(
           imdcName_,
           imdcCols_,
           imdcInMemSizeInMB_);
   }
    
   IMDC_name.finalizeCollection();
    
   int taskIdx = TaskInfo.getTaskIndex();
   long numRows = IMDC_name.numRows();
    
   outputEmitter.addInt(taskIdx);
   outputEmitter.addLong(numRows);
   outputEmitter.emitRow();
}