ParquetDataFile.scala
val iterator = reader.iteratorWithRowIds(requiredIds, rowIds)
.asInstanceOf[OapCompletionIterator[InternalRow]]
val result = ArrayBuffer[Int]()
while (iterator.hasNext) {
val row: InternalRow = iterator.next()
assert(row.numFields == 2)
result += row.getInt(0)
}
DataFile.scala
private[oap] class OapCompletionIterator[T](inner: Iterator[T], completionFunction: => Unit)
extends Iterator[T] with Closeable {
private[this] var completed = false
override def hasNext: Boolean = {
val r = inner.hasNext
if (!r && !completed) {
completed = true
completionFunction
}
r
}
override def next(): T = inner.next()
override def close(): Unit = {}