diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/FetchOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/FetchOperator.java index 601ad08..f6201ef 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/FetchOperator.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/FetchOperator.java @@ -377,8 +377,27 @@ public boolean doNext(WritableComparable key, Writable value) throws IOException if (work.getSplitSample() != null) { inputSplits = splitSampling(work.getSplitSample(), inputSplits); } + if (inputSplits.length > 0) { - return inputSplits; + boolean[] isEmptySplit = new boolean[inputSplits.length]; + int emptyCount = 0; + for (int i = 0; i < inputSplits.length; i++) { + if (inputSplits[i].getLength() == 0) { + isEmptySplit[i] = true; + emptyCount++; + } + } + if (emptyCount < inputSplits.length) { + int finalLength = inputSplits.length - emptyCount; + FetchInputFormatSplit[] finalSplits = new FetchInputFormatSplit[finalLength]; + int index = 0; + for (int i = 0; i < inputSplits.length; i++) { + if (!isEmptySplit[i]) { + finalSplits[index++] = inputSplits[i]; + } + } + return finalSplits; + } } } return null;