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



为什么Spark显示nullable=true,而没有指定schema,其推理留给Spark?

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

通过JsonInferSchema类,可以看到对于StructType,显式null设置为true。但我无法理解背后的原因。

PS:我的目标是为一个大型JSON数据集(<100GB(推断模式,并想看看Spark是否能够或必须编写一个自定义的map reduce作业,如论文中所强调的:海量JSON数据集的模式推理。一个主要部分是我想知道哪些字段是可选的,哪些是强制性的(关于数据集(。

由于检查范围和样本量有限,它可能会为模式推断做一个数据样本,而在该样本中,它无法100%推断是否为null。因此,设置为null更安全。就这么简单。

最新更新