You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@carbondata.apache.org by kumarvishal09 <gi...@git.apache.org> on 2019/01/02 11:19:51 UTC

[GitHub] carbondata pull request #3029: [CARBONDATA-3200] No-Sort compaction

Github user kumarvishal09 commented on a diff in the pull request:

    https://github.com/apache/carbondata/pull/3029#discussion_r244712666
  
    --- Diff: processing/src/main/java/org/apache/carbondata/processing/sort/sortdata/InMemorySortTempChunkHolder.java ---
    @@ -0,0 +1,109 @@
    +package org.apache.carbondata.processing.sort.sortdata;
    +
    +import java.util.Comparator;
    +
    +import org.apache.carbondata.core.datastore.block.SegmentProperties;
    +import org.apache.carbondata.core.datastore.row.CarbonRow;
    +import org.apache.carbondata.core.datastore.row.WriteStepRowUtil;
    +import org.apache.carbondata.core.metadata.schema.table.column.CarbonColumn;
    +import org.apache.carbondata.core.scan.result.iterator.RawResultIterator;
    +import org.apache.carbondata.processing.loading.row.IntermediateSortTempRow;
    +import org.apache.carbondata.processing.loading.sort.SortStepRowHandler;
    +import org.apache.carbondata.processing.sort.exception.CarbonSortKeyAndGroupByException;
    +
    +public class InMemorySortTempChunkHolder extends SortTempFileChunkHolder {
    +
    +  private final RawResultIterator rawResultIterator;
    +
    +  private IntermediateSortTempRow returnRow;
    +//  private Object[] row;
    +
    +  private SegmentProperties segmentProperties;
    +
    +  private CarbonColumn[] noDicAndComplexColumns;
    +
    +  private TableFieldStat tableFieldStat;
    +  private Comparator<IntermediateSortTempRow> comparator;
    +
    +  public InMemorySortTempChunkHolder(RawResultIterator rawResultIterator,
    +      SegmentProperties segmentProperties, CarbonColumn[] noDicAndComplexColumns, SortParameters sortParameters) {
    +    this.rawResultIterator = rawResultIterator;
    +    this.segmentProperties = segmentProperties;
    +    this.noDicAndComplexColumns = noDicAndComplexColumns;
    +
    +    this.tableFieldStat = new TableFieldStat(sortParameters);
    +    this.comparator = new IntermediateSortTempRowComparator(
    +        tableFieldStat.getIsSortColNoDictFlags(), tableFieldStat.getNoDictDataType());
    +  }
    +
    +  public void initialise() throws CarbonSortKeyAndGroupByException {
    +    // Not required for In memory case as it will not initialize anything
    +    throw new UnsupportedOperationException("Operation Not supported");
    +  }
    +
    +  public void readRow() throws CarbonSortKeyAndGroupByException {
    +    Object[] row = this.rawResultIterator.next();
    +
    +    //TODO add code to get directly Object[] Instead Of CarbonRow Object
    +    CarbonRow carbonRow =
    +        WriteStepRowUtil.fromMergerRow(row, segmentProperties, noDicAndComplexColumns);
    +    Object[] data = carbonRow.getData();
    +    returnRow = new IntermediateSortTempRow(
    +        (int[]) data[WriteStepRowUtil.DICTIONARY_DIMENSION],
    +        (Object[]) data[WriteStepRowUtil.NO_DICTIONARY_AND_COMPLEX],
    +        (Object[]) data[WriteStepRowUtil.MEASURE]);
    +  }
    +
    +  public int getEntryCount() {
    +    // this will not be used for intermediate sorting
    +    throw new UnsupportedOperationException("Operation Not supported");
    +  }
    +
    +  /**
    +   * below method will be used to check whether any more records are present
    +   * in file or not
    +   *
    +   * @return more row present in file
    +   */
    +  public boolean hasNext() {
    +    return this.rawResultIterator.hasNext();
    +  }
    +
    +  @Override public boolean equals(Object obj) {
    +    return super.equals(obj);
    +  }
    +
    +  @Override public int hashCode() {
    +    int hash = rawResultIterator.hashCode();
    +    hash += segmentProperties.hashCode();
    +    return hash;
    +  }
    +
    +
    +  @Override public int compareTo(SortTempFileChunkHolder other) {
    +    return comparator.compare(returnRow, other.getRow());
    +  }
    +
    +  /**
    +   * Below method will be used to close streams
    +   */
    +  public void closeStream() {
    +    rawResultIterator.close();
    +  }
    +
    +  /* below method will be used to get the sort temp row
    +   *
    +   * @return row
    +   */
    +  public IntermediateSortTempRow getRow() {
    +//    //TODO add code to get directly Object[] Instead Of CarbonRow Object
    --- End diff --
    
    remove this commented code


---