From 0e93b66e0d994651c3a21d38be49529be5fdde7e Mon Sep 17 00:00:00 2001 From: Ganesh Kumar Date: Thu, 29 Oct 2015 18:01:26 -0500 Subject: [PATCH] support for wrappedarray in schemapreservingsolrrdd --- .../spark/SchemaPreservingSolrRDD.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/lucidworks/spark/SchemaPreservingSolrRDD.java b/src/main/java/com/lucidworks/spark/SchemaPreservingSolrRDD.java index e62cc3a7..87ba07cb 100644 --- a/src/main/java/com/lucidworks/spark/SchemaPreservingSolrRDD.java +++ b/src/main/java/com/lucidworks/spark/SchemaPreservingSolrRDD.java @@ -536,12 +536,23 @@ public static Object getArrayToString(org.apache.spark.sql.types.DataType dataTy if (dataType.typeName().equals("array")) { org.apache.spark.sql.types.ArrayType a = (org.apache.spark.sql.types.ArrayType) dataType; org.apache.spark.sql.types.DataType e = a.elementType(); - scala.collection.mutable.WrappedArray ab = (scala.collection.mutable.WrappedArray) value; - Object[] d; - if (ab.size() > 0) { - d = new Object[ab.size()]; - Object[] ab1 = new Object[ab.size()]; + int arraysize = 0; + Object[] ab1 = new Object[arraysize]; + if (value instanceof scala.collection.mutable.WrappedArray) { + scala.collection.mutable.WrappedArray ab = (scala.collection.mutable.WrappedArray) value; + arraysize = ab.size(); + ab1 = new Object[ab.size()]; ab.deep().copyToArray(ab1); + } + if (value instanceof scala.collection.mutable.ArrayBuffer) { + scala.collection.mutable.ArrayBuffer ab = (scala.collection.mutable.ArrayBuffer) value; + arraysize = ab.size(); + //ab1 = new Object[ab.size()]; + ab1 = ab.array(); + } + Object[] d; + if (arraysize > 0) { + d = new Object[arraysize]; for (int i = 0; i < ab1.length; i++) { if (e.typeName().equals("array")) { d[i] = getArrayToString(e, ab1[i]);