diff --git llap-server/src/java/org/apache/hadoop/hive/llap/io/decode/OrcColumnVectorProducer.java llap-server/src/java/org/apache/hadoop/hive/llap/io/decode/OrcColumnVectorProducer.java index a1fee6e..f4e8d38 100644 --- llap-server/src/java/org/apache/hadoop/hive/llap/io/decode/OrcColumnVectorProducer.java +++ llap-server/src/java/org/apache/hadoop/hive/llap/io/decode/OrcColumnVectorProducer.java @@ -57,8 +57,7 @@ private final OrcEncodedDataProducer _edp; private final OrcMetadataCache _metadataCache; private boolean _skipCorrupt; - private int _previousStripeIndex; - + public OrcColumnVectorProducer(ExecutorService executor, OrcEncodedDataProducer edp, Configuration conf) { super(executor); @@ -69,7 +68,6 @@ public OrcColumnVectorProducer(ExecutorService executor, OrcEncodedDataProducer this._edp = edp; this._metadataCache = OrcMetadataCache.getInstance(); this._skipCorrupt = HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVE_ORC_SKIP_CORRUPT_DATA); - this._previousStripeIndex = -1; } @Override @@ -84,10 +82,10 @@ protected void decodeBatch(EncodedDataConsumer context, OrcEncodedDataConsumer oedc = (OrcEncodedDataConsumer)context; String fileName = batch.batchKey.file; int currentStripeIndex = batch.batchKey.stripeIx; - if (_previousStripeIndex == -1) { - _previousStripeIndex = currentStripeIndex; + if (oedc.getPreviousStripeIndex() == -1) { + oedc.setPreviousStripeIndex(currentStripeIndex); } - boolean sameStripe = currentStripeIndex == _previousStripeIndex; + boolean sameStripe = currentStripeIndex == oedc.getPreviousStripeIndex(); // OrcEncodedDataProducer should have just loaded cache entries from this file. // The default LRU algorithm shouldn't have dropped the entries. To make it @@ -119,7 +117,7 @@ protected void decodeBatch(EncodedDataConsumer context, repositionInStreams(oedc.getColumnReaders(), batch, sameStripe, numCols, fileMetadata, stripeMetadata); } - _previousStripeIndex = currentStripeIndex; + oedc.setPreviousStripeIndex(currentStripeIndex); for (int i = 0; i < maxBatchesRG; i++) { ColumnVectorBatch cvb = new ColumnVectorBatch(batch.columnIxs.length); diff --git llap-server/src/java/org/apache/hadoop/hive/llap/io/decode/OrcEncodedDataConsumer.java llap-server/src/java/org/apache/hadoop/hive/llap/io/decode/OrcEncodedDataConsumer.java index bb654de..df0b45a 100644 --- llap-server/src/java/org/apache/hadoop/hive/llap/io/decode/OrcEncodedDataConsumer.java +++ llap-server/src/java/org/apache/hadoop/hive/llap/io/decode/OrcEncodedDataConsumer.java @@ -18,18 +18,26 @@ package org.apache.hadoop.hive.llap.io.decode; import org.apache.hadoop.hive.llap.Consumer; -import org.apache.hadoop.hive.llap.ConsumerFeedback; -import org.apache.hadoop.hive.llap.io.api.EncodedColumnBatch.StreamBuffer; import org.apache.hadoop.hive.llap.io.api.impl.ColumnVectorBatch; import org.apache.hadoop.hive.llap.io.api.orc.OrcBatchKey; import org.apache.hadoop.hive.ql.io.orc.RecordReaderImpl; public class OrcEncodedDataConsumer extends EncodedDataConsumer { + private int previousStripeIndex; private RecordReaderImpl.TreeReader[] columnReaders; public OrcEncodedDataConsumer( ColumnVectorProducer cvp, Consumer consumer, int colCount) { super(cvp, consumer, colCount); + this.previousStripeIndex = -1; + } + + public int getPreviousStripeIndex() { + return previousStripeIndex; + } + + public void setPreviousStripeIndex(int previousStripeIndex) { + this.previousStripeIndex = previousStripeIndex; } public void setColumnReaders(RecordReaderImpl.TreeReader[] columnReaders) {