在 JSON 的情况下,当模式推断留给 Spark 时,为什么 Spark 会输出 nullable = true?

2024-03-13

Spark为何显示可空 = true,当未指定模式并将其推理留给 Spark 时?

// shows nullable = true for fields which are present in all JSON records.
spark.read.json("s3://s3path").printSchema() 

走过课堂Json推断模式 https://github.com/apache/spark/blob/master/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/json/JsonInferSchema.scala#L347,可以看到对于StructType,显式可空设置为true。但我无法理解其背后的原因。

PS:我的目标是推断大型 JSON 数据集(海量 JSON 数据集的模式推理。一个主要部分是我想知道哪些字段是可选的,哪些字段是强制性的(w.r.t 数据集)。


因为它可能会对用于模式推断的数据进行采样,但由于检查范围、样本大小有限,无法 100% 推断 null 或非 null。因此设置为 null 更安全。就这么简单。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 JSON 的情况下,当模式推断留给 Spark 时,为什么 Spark 会输出 nullable = true? 的相关文章

随机推荐