为什么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更安全。就这么简单。