Github user gatorsmile commented on a diff in the pull request:
https://github.com/apache/spark/pull/18865#discussion_r136708708
--- Diff:
sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/json/JsonSuite.scala
---
@@ -2034,4 +2034,31 @@ class JsonSuite extends QueryTest with
SharedSQLContext with TestJsonData {
}
}
}
+
+ test("SPARK-21610: Corrupt records are not handled properly when
creating a dataframe " +
+ "from a file") {
+ withTempPath { dir =>
+ val path = dir.getCanonicalPath
+ val writer = new OutputStreamWriter(new FileOutputStream(path),
StandardCharsets.UTF_8)
+ val data =
+ """{"field": 1}
+ |{"field": 2}
+ |{"field": "3"}""".stripMargin
+ writer.write(data)
+ writer.close()
+
+ val schema = new StructType()
+ .add("field", ByteType)
+ .add("_corrupt_record", StringType)
+
+ val errMsg = intercept[SparkException] {
+ spark.read
+ .schema(schema)
+ .json(path)
+ .select("_corrupt_record")
+ .show()
+ }.getMessage
+ assert(errMsg.contains("'_corrupt_record' must be selected along
with input schema."))
+ }
+ }
--- End diff --
It can be simplified to
```Scala
withTempPath { dir =>
val path = dir.getCanonicalPath
val data =
"""{"field": 1}
|{"field": 2}
|{"field": "3"}""".stripMargin
sparkContext.parallelize(data, 1).saveAsTextFile(path)
val e = intercept[SparkException] {
spark.read.json(path).select("_corrupt_record").collect()
}.getMessage
assert(e.contains("'_corrupt_record' must be selected along with
input schema."))
}
```
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]