有点困惑,为什么spark在schema定义为null时不抛出异常。这是我的例子
val testCSVPath = "src/main/resources/data/test.csv"
val testSchema = StructType(
Array(
StructField("name", StringType, false),
StructField("age", IntegerType, false)))
val testDFWithSchema =
sparkSession
.read
.format("csv")
.schema(testSchema)
.option("header", "true")
.load(testCSVPath)
testDFWithSchema.show()
csv文件输入
name,age
"a",1
"b",2
null,3
"c",4
"",5
csv文件名列值为空。但它并没有抛出任何例外。你知道我的spark 2.2.2版吗
1条答案
按热度按时间h5qlskok1#
好吧,这不是我的行为。
正如您所期望的,如本例中的空验证一样。
在变量中
data
第二排是null
我会给你的RuntimeException
assertnotnull
... 就像下面。。。但在你的例子中:
将打印
如果你把模式看作树字符串
nullable = true
即使你把它设定为false
.结论:
我得出的结论是spark csv api不支持空约束的数据源级别
进一步阅读sparkDataframe架构可空字段