From 3af656defab4ab31ac11672c90995093aadeb163 Mon Sep 17 00:00:00 2001 From: Yin Huai Date: Tue, 8 Dec 2015 15:28:48 -0800 Subject: [PATCH] Make ExecutionMode.HashResults handle null value In Spark 1.6, if a value is null, `getLong` will throw an exception. Before 1.6, it will return 0. With this PR, we will check if the result is null. If it is null, null will be returned instead of 0. Author: Yin Huai Closes #41 from yhuai/fixSumHash. --- src/main/scala/com/databricks/spark/sql/perf/Benchmark.scala | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/scala/com/databricks/spark/sql/perf/Benchmark.scala b/src/main/scala/com/databricks/spark/sql/perf/Benchmark.scala index 639b0cd..8102337 100644 --- a/src/main/scala/com/databricks/spark/sql/perf/Benchmark.scala +++ b/src/main/scala/com/databricks/spark/sql/perf/Benchmark.scala @@ -607,14 +607,13 @@ abstract class Benchmark( case ExecutionMode.HashResults => val columnStr = dataFrame.schema.map(_.name).mkString(",") // SELECT SUM(HASH(col1, col2, ...)) FROM (benchmark query) - val ret = + val row = dataFrame .selectExpr(s"hash($columnStr) as hashValue") .groupBy() .sum("hashValue") .head() - .getLong(0) - result = Some(ret) + result = if (row.isNullAt(0)) None else Some(row.getLong(0)) } }