aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveInspectors.scala8
1 files changed, 7 insertions, 1 deletions
diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveInspectors.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveInspectors.scala
index 06189341f8..e114747813 100644
--- a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveInspectors.scala
+++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveInspectors.scala
@@ -297,7 +297,13 @@ private[hive] trait HiveInspectors {
case x: ByteObjectInspector if x.preferWritable() => x.get(data)
case x: HiveDecimalObjectInspector => HiveShim.toCatalystDecimal(x, data)
case x: BinaryObjectInspector if x.preferWritable() =>
- x.getPrimitiveWritableObject(data).copyBytes()
+ // BytesWritable.copyBytes() only available since Hadoop2
+ // In order to keep backward-compatible, we have to copy the
+ // bytes with old apis
+ val bw = x.getPrimitiveWritableObject(data)
+ val result = new Array[Byte](bw.getLength())
+ System.arraycopy(bw.getBytes(), 0, result, 0, bw.getLength())
+ result
case x: DateObjectInspector if x.preferWritable() =>
x.getPrimitiveWritableObject(data).get()
// org.apache.hadoop.hive.serde2.io.TimestampWritable.set will reset current time object