You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by gu...@apache.org on 2018/11/08 06:51:36 UTC
spark git commit: [SPARK-25955][TEST] Porting JSON tests for CSV
functions
Repository: spark
Updated Branches:
refs/heads/master 17449a2e6 -> ee03f760b
[SPARK-25955][TEST] Porting JSON tests for CSV functions
## What changes were proposed in this pull request?
In the PR, I propose to port existing JSON tests from `JsonFunctionsSuite` that are applicable for CSV, and put them to `CsvFunctionsSuite`. In particular:
- roundtrip `from_csv` to `to_csv`, and `to_csv` to `from_csv`
- using `schema_of_csv` in `from_csv`
- Java API `from_csv`
- using `from_csv` and `to_csv` in exprs.
Closes #22960 from MaxGekk/csv-additional-tests.
Authored-by: Maxim Gekk <ma...@gmail.com>
Signed-off-by: hyukjinkwon <gu...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/spark/repo
Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/ee03f760
Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/ee03f760
Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/ee03f760
Branch: refs/heads/master
Commit: ee03f760b305e70a57c3b4409ec25897af348600
Parents: 17449a2
Author: Maxim Gekk <ma...@gmail.com>
Authored: Thu Nov 8 14:51:29 2018 +0800
Committer: hyukjinkwon <gu...@apache.org>
Committed: Thu Nov 8 14:51:29 2018 +0800
----------------------------------------------------------------------
.../apache/spark/sql/CsvFunctionsSuite.scala | 47 ++++++++++++++++++++
1 file changed, 47 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/spark/blob/ee03f760/sql/core/src/test/scala/org/apache/spark/sql/CsvFunctionsSuite.scala
----------------------------------------------------------------------
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/CsvFunctionsSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/CsvFunctionsSuite.scala
index 1dd8ec3..b97ac38 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/CsvFunctionsSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/CsvFunctionsSuite.scala
@@ -117,4 +117,51 @@ class CsvFunctionsSuite extends QueryTest with SharedSQLContext {
"Acceptable modes are PERMISSIVE and FAILFAST."))
}
}
+
+ test("from_csv uses DDL strings for defining a schema - java") {
+ val df = Seq("""1,"haa"""").toDS()
+ checkAnswer(
+ df.select(
+ from_csv($"value", lit("a INT, b STRING"), new java.util.HashMap[String, String]())),
+ Row(Row(1, "haa")) :: Nil)
+ }
+
+ test("roundtrip to_csv -> from_csv") {
+ val df = Seq(Tuple1(Tuple1(1)), Tuple1(null)).toDF("struct")
+ val schema = df.schema(0).dataType.asInstanceOf[StructType]
+ val options = Map.empty[String, String]
+ val readback = df.select(to_csv($"struct").as("csv"))
+ .select(from_csv($"csv", schema, options).as("struct"))
+
+ checkAnswer(df, readback)
+ }
+
+ test("roundtrip from_csv -> to_csv") {
+ val df = Seq(Some("1"), None).toDF("csv")
+ val schema = new StructType().add("a", IntegerType)
+ val options = Map.empty[String, String]
+ val readback = df.select(from_csv($"csv", schema, options).as("struct"))
+ .select(to_csv($"struct").as("csv"))
+
+ checkAnswer(df, readback)
+ }
+
+ test("infers schemas of a CSV string and pass to to from_csv") {
+ val in = Seq("""0.123456789,987654321,"San Francisco"""").toDS()
+ val options = Map.empty[String, String].asJava
+ val out = in.select(from_csv('value, schema_of_csv("0.1,1,a"), options) as "parsed")
+ val expected = StructType(Seq(StructField(
+ "parsed",
+ StructType(Seq(
+ StructField("_c0", DoubleType, true),
+ StructField("_c1", IntegerType, true),
+ StructField("_c2", StringType, true))))))
+
+ assert(out.schema == expected)
+ }
+
+ test("Support to_csv in SQL") {
+ val df1 = Seq(Tuple1(Tuple1(1))).toDF("a")
+ checkAnswer(df1.selectExpr("to_csv(a)"), Row("1") :: Nil)
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org