diff --git a/ql/src/java/org/apache/hadoop/hive/llap/LlapCacheAwareFs.java b/ql/src/java/org/apache/hadoop/hive/llap/LlapCacheAwareFs.java index f68ebd7c6d..d90fbcdcde 100644 --- a/ql/src/java/org/apache/hadoop/hive/llap/LlapCacheAwareFs.java +++ b/ql/src/java/org/apache/hadoop/hive/llap/LlapCacheAwareFs.java @@ -378,6 +378,14 @@ private void copyDiskDataToCacheBuffer(byte[] diskData, int offsetInDiskData, in } long lastMissingOffset = missingChunks.lastKey(), lastMissingEnd = missingChunks.get(lastMissingOffset); + + //check partial chunk in consecutive chunk, then split chunk + if (to < lastMissingEnd) { + missingChunks.put(lastMissingOffset, to); + chunkIndex.put(to, lastMissingEnd); + lastMissingEnd = to; + } + if (lastMissingEnd < to || (to != lastMissingEnd && ((to - lastMissingOffset) % maxAlloc) != 0)) { // The data does not belong to a recognized chunk, or is split wrong.