aboutsummaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorJason Lee <cjlee@us.ibm.com>2016-01-27 09:55:10 -0800
committerYin Huai <yhuai@databricks.com>2016-01-27 09:55:10 -0800
commitedd473751b59b55fa3daede5ed7bc19ea8bd7170 (patch)
treef05e166a4fd9959182f72a66a15f6118684c9468 /sql
parent41f0c85f9be264103c066935e743f59caf0fe268 (diff)
downloadspark-edd473751b59b55fa3daede5ed7bc19ea8bd7170.tar.gz
spark-edd473751b59b55fa3daede5ed7bc19ea8bd7170.tar.bz2
spark-edd473751b59b55fa3daede5ed7bc19ea8bd7170.zip
[SPARK-10847][SQL][PYSPARK] Pyspark - DataFrame - Optional Metadata with `None` triggers cryptic failure
The error message is now changed from "Do not support type class scala.Tuple2." to "Do not support type class org.json4s.JsonAST$JNull$" to be more informative about what is not supported. Also, StructType metadata now handles JNull correctly, i.e., {'a': None}. test_metadata_null is added to tests.py to show the fix works. Author: Jason Lee <cjlee@us.ibm.com> Closes #8969 from jasoncl/SPARK-10847.
Diffstat (limited to 'sql')
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/types/Metadata.scala7
1 files changed, 6 insertions, 1 deletions
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/types/Metadata.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/types/Metadata.scala
index 6ee24ee0c1..9e0f9943bc 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/types/Metadata.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/types/Metadata.scala
@@ -156,7 +156,9 @@ object Metadata {
throw new RuntimeException(s"Do not support array of type ${other.getClass}.")
}
}
- case other =>
+ case (key, JNull) =>
+ builder.putNull(key)
+ case (key, other) =>
throw new RuntimeException(s"Do not support type ${other.getClass}.")
}
builder.build()
@@ -229,6 +231,9 @@ class MetadataBuilder {
this
}
+ /** Puts a null. */
+ def putNull(key: String): this.type = put(key, null)
+
/** Puts a Long. */
def putLong(key: String, value: Long): this.type = put(key, value)