You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by da...@apache.org on 2018/01/03 00:13:01 UTC

kudu git commit: [spark] Avoid using TraversableLike.map in RowIterator.next()

Repository: kudu
Updated Branches:
  refs/heads/master 07e4cbd4d -> 2b413ee6c


[spark] Avoid using TraversableLike.map in RowIterator.next()

RowIterator.next() currently uses TraversableLike.map operation to
iterate over the columns in a Kudu RowResult. However, it's a generic
function that is not optimized for primitive integers, and profiling
revealed that it adds non-trivial overhead to executor performance.

By replacing it with Range.foreach (which is specialized for integers),
we could reduce the response times of single-column aggregation queries
by around 30%. e.g. "select max(col) from warmed_up_table"

Change-Id: I85ab882d5695ccb2fee09fe7a124129cf4610d56
Reviewed-on: http://gerrit.cloudera.org:8080/8922
Reviewed-by: Dan Burkert <da...@apache.org>
Tested-by: Kudu Jenkins


Project: http://git-wip-us.apache.org/repos/asf/kudu/repo
Commit: http://git-wip-us.apache.org/repos/asf/kudu/commit/2b413ee6
Tree: http://git-wip-us.apache.org/repos/asf/kudu/tree/2b413ee6
Diff: http://git-wip-us.apache.org/repos/asf/kudu/diff/2b413ee6

Branch: refs/heads/master
Commit: 2b413ee6cf20570f2ffdcf507bb6b0e8304176d9
Parents: 07e4cbd
Author: Junegunn Choi <ju...@gmail.com>
Authored: Fri Dec 29 10:37:24 2017 +0900
Committer: Dan Burkert <da...@apache.org>
Committed: Wed Jan 3 00:12:49 2018 +0000

----------------------------------------------------------------------
 .../src/main/scala/org/apache/kudu/spark/kudu/KuduRDD.scala   | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kudu/blob/2b413ee6/java/kudu-spark/src/main/scala/org/apache/kudu/spark/kudu/KuduRDD.scala
----------------------------------------------------------------------
diff --git a/java/kudu-spark/src/main/scala/org/apache/kudu/spark/kudu/KuduRDD.scala b/java/kudu-spark/src/main/scala/org/apache/kudu/spark/kudu/KuduRDD.scala
index 3baa65f..daed3f0 100644
--- a/java/kudu-spark/src/main/scala/org/apache/kudu/spark/kudu/KuduRDD.scala
+++ b/java/kudu-spark/src/main/scala/org/apache/kudu/spark/kudu/KuduRDD.scala
@@ -128,6 +128,11 @@ private class RowIterator(private val scanner: KuduScanner,
 
   override def next(): Row = {
     val rowResult = currentIterator.next()
-    Row.fromSeq(Range(0, rowResult.getColumnProjection.getColumnCount).map(get(rowResult, _)))
+    val columnCount = rowResult.getColumnProjection.getColumnCount
+    val columns = Array.ofDim[Any](columnCount)
+    for (i <- 0 until columnCount) {
+      columns(i) = get(rowResult, i)
+    }
+    Row.fromSeq(columns)
   }
 }