aboutsummaryrefslogtreecommitdiff
path: root/sql/core/src/test/java
diff options
context:
space:
mode:
authorXiangrui Meng <meng@databricks.com>2015-03-24 10:11:27 -0700
committerXiangrui Meng <meng@databricks.com>2015-03-24 10:11:27 -0700
commita1d1529daebee30b76b954d16a30849407f795d1 (patch)
tree121a7655df38cef5bced7d4b7c7b1e717c162182 /sql/core/src/test/java
parent08d452801195cc6cf0697a594e98cd4778f358ee (diff)
downloadspark-a1d1529daebee30b76b954d16a30849407f795d1.tar.gz
spark-a1d1529daebee30b76b954d16a30849407f795d1.tar.bz2
spark-a1d1529daebee30b76b954d16a30849407f795d1.zip
[SPARK-6475][SQL] recognize array types when infer data types from JavaBeans
Right now if there is a array field in a JavaBean, the user wold see an exception in `createDataFrame`. liancheng Author: Xiangrui Meng <meng@databricks.com> Closes #5146 from mengxr/SPARK-6475 and squashes the following commits: 51e87e5 [Xiangrui Meng] validate schemas 4f2df5e [Xiangrui Meng] recognize array types when infer data types from JavaBeans
Diffstat (limited to 'sql/core/src/test/java')
-rw-r--r--sql/core/src/test/java/test/org/apache/spark/sql/JavaDataFrameSuite.java41
1 files changed, 40 insertions, 1 deletions
diff --git a/sql/core/src/test/java/test/org/apache/spark/sql/JavaDataFrameSuite.java b/sql/core/src/test/java/test/org/apache/spark/sql/JavaDataFrameSuite.java
index 2d586f784a..1ff2d5a190 100644
--- a/sql/core/src/test/java/test/org/apache/spark/sql/JavaDataFrameSuite.java
+++ b/sql/core/src/test/java/test/org/apache/spark/sql/JavaDataFrameSuite.java
@@ -17,29 +17,39 @@
package test.org.apache.spark.sql;
+import java.io.Serializable;
+import java.util.Arrays;
+
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
+import org.apache.spark.api.java.JavaRDD;
+import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.*;
+import org.apache.spark.sql.test.TestSQLContext;
import org.apache.spark.sql.test.TestSQLContext$;
-import static org.apache.spark.sql.functions.*;
+import org.apache.spark.sql.types.*;
+import static org.apache.spark.sql.functions.*;
public class JavaDataFrameSuite {
+ private transient JavaSparkContext jsc;
private transient SQLContext context;
@Before
public void setUp() {
// Trigger static initializer of TestData
TestData$.MODULE$.testData();
+ jsc = new JavaSparkContext(TestSQLContext.sparkContext());
context = TestSQLContext$.MODULE$;
}
@After
public void tearDown() {
+ jsc = null;
context = null;
}
@@ -90,4 +100,33 @@ public class JavaDataFrameSuite {
df.show();
df.show(1000);
}
+
+ public static class Bean implements Serializable {
+ private double a = 0.0;
+ private Integer[] b = new Integer[]{0, 1};
+
+ public double getA() {
+ return a;
+ }
+
+ public Integer[] getB() {
+ return b;
+ }
+ }
+
+ @Test
+ public void testCreateDataFrameFromJavaBeans() {
+ Bean bean = new Bean();
+ JavaRDD<Bean> rdd = jsc.parallelize(Arrays.asList(bean));
+ DataFrame df = context.createDataFrame(rdd, Bean.class);
+ StructType schema = df.schema();
+ Assert.assertEquals(new StructField("a", DoubleType$.MODULE$, false, Metadata.empty()),
+ schema.apply("a"));
+ Assert.assertEquals(
+ new StructField("b", new ArrayType(IntegerType$.MODULE$, true), true, Metadata.empty()),
+ schema.apply("b"));
+ Row first = df.select("a", "b").first();
+ Assert.assertEquals(bean.getA(), first.getDouble(0), 0.0);
+ Assert.assertArrayEquals(bean.getB(), first.<Integer[]>getAs(1));
+ }
}