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
---