diff --git llap-server/src/java/org/apache/hadoop/hive/llap/io/api/impl/LlapRecordReader.java llap-server/src/java/org/apache/hadoop/hive/llap/io/api/impl/LlapRecordReader.java index 5f010bed8d..e0afabd70a 100644 --- llap-server/src/java/org/apache/hadoop/hive/llap/io/api/impl/LlapRecordReader.java +++ llap-server/src/java/org/apache/hadoop/hive/llap/io/api/impl/LlapRecordReader.java @@ -38,6 +38,7 @@ import org.apache.hadoop.hive.llap.tezplugins.LlapTezUtils; import org.apache.hadoop.hive.ql.exec.Utilities; import org.apache.hadoop.hive.ql.exec.tez.DagUtils; +import org.apache.hadoop.hive.ql.exec.vector.ColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatchCtx; import org.apache.hadoop.hive.ql.io.orc.OrcInputFormat; @@ -253,7 +254,7 @@ public boolean next(NullWritable key, VectorizedRowBatch value) throws IOExcepti } isFirst = false; } - ColumnVectorBatch cvb = null; + final ColumnVectorBatch cvb; try { cvb = nextCvb(); } catch (InterruptedException e) { @@ -272,16 +273,20 @@ public boolean next(NullWritable key, VectorizedRowBatch value) throws IOExcepti HiveConf.ConfVars.HIVE_VECTORIZATION_ENABLED); if (isAcidScan) { - value.selectedInUse = true; if (isVectorized) { - final VectorizedRowBatch acidVrb = new VectorizedRowBatch(cvb.cols.length); - acidVrb.cols = cvb.cols; - acidVrb.size = cvb.size; + final int numCols = cvb.cols.length; final VectorizedOrcAcidRowBatchReader acidReader = - new VectorizedOrcAcidRowBatchReader((OrcSplit)split, jobConf, Reporter.NULL, + new VectorizedOrcAcidRowBatchReader((OrcSplit) split, jobConf, Reporter.NULL, new RecordReader() { @Override public boolean next(NullWritable key, VectorizedRowBatch value) throws IOException { + for (int i = 0; i < numCols; i++) { + ColumnVector valueCol = value.cols[i]; + value.cols[i] = cvb.cols[i]; + cvb.cols[i] = valueCol; + + value.size = cvb.size; + } return true; } @@ -292,7 +297,7 @@ public NullWritable createKey() { @Override public VectorizedRowBatch createValue() { - return acidVrb; + return new VectorizedRowBatch(cvb.cols.length); } @Override