From a68c0e2a34186e2f9e8725d7c5b2cb5c88bab148 Mon Sep 17 00:00:00 2001 From: tedyu Date: Fri, 14 Oct 2016 10:16:43 -0700 Subject: [PATCH] HBASE-16818 Avoid multiple copies of binary data during the conversion from Result to Row (Weiqing Yang) --- .../scala/org/apache/hadoop/hbase/spark/DefaultSource.scala | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/hbase-spark/src/main/scala/org/apache/hadoop/hbase/spark/DefaultSource.scala b/hbase-spark/src/main/scala/org/apache/hadoop/hbase/spark/DefaultSource.scala index 8d94a79f00f..b04abd869e3 100644 --- a/hbase-spark/src/main/scala/org/apache/hadoop/hbase/spark/DefaultSource.scala +++ b/hbase-spark/src/main/scala/org/apache/hadoop/hbase/spark/DefaultSource.scala @@ -276,7 +276,11 @@ case class HBaseRelation ( (x, null) } else { val v = CellUtil.cloneValue(kv) - (x, Utils.hbaseFieldToScalaType(x, v, 0, v.length)) + (x, x.dt match { + // Here, to avoid arraycopy, return v directly instead of calling hbaseFieldToScalaType + case BinaryType => v + case _ => Utils.hbaseFieldToScalaType(x, v, 0, v.length) + }) } }.toMap val unionedRow = keySeq ++ valueSeq