在JSON的情况下,当模式推断留给Spark时,为什么Spark输出nullable=true?
为什么Spark显示nullable=true,而模式未指定,其推理留待Spark处理在JSON的情况下,当模式推断留给Spark时,为什么Spark输出nullable=true?,json,dataframe,apache-spark,jsonschema,Json,Dataframe,Apache Spark,Jsonschema,为什么Spark显示nullable=true,而模式未指定,其推理留待Spark处理 // shows nullable = true for fields which are present in all JSON records. spark.read.json("s3://s3path").printSchema() 浏览该类,可以看到StructType的显式nullable设置为true。但我无法理解背后的原因 PS:我的目标是为一个大型JSON数据集(
// shows nullable = true for fields which are present in all JSON records.
spark.read.json("s3://s3path").printSchema()
浏览该类,可以看到StructType的显式nullable设置为true。但我无法理解背后的原因
PS:我的目标是为一个大型JSON数据集(<100GB)推断模式,并想看看Spark是否提供了定制map reduce作业的能力,或者是否需要编写一个定制map reduce作业,如本文所述:
. 一个主要部分是我想知道哪些字段是可选的,哪些字段是必需的(w.r.t数据集)。因为由于检查范围和样本大小的限制,它可能会为模式推断做一个数据样本,在这个样本中,它无法100%推断是否为null。因此,设置为null更安全。那很简单 你能详细说明一下吗。默认情况下sampleRatio是1.0:不确定1.0是指完整的数据还是完整的分区。但是你可以覆盖它。对不起,我有点困惑。默认值为1.0,我不会覆盖它。因此,如果它检查所有记录的模式(假设1.0意味着完整数据),那么它是否能够确定字段是否可以为空?正如您所说,从代码中,它就是它设置的。因为当您不进行100%扫描以进行推断时,将其设置为nullable更安全。然后他们决定,由于大多数人不会100%采样,所以设置应始终如此。