Apache spark 为什么Spark不能自动检测拼花文件中的新字段?

Apache spark 为什么Spark不能自动检测拼花文件中的新字段?,apache-spark,pyspark,apache-spark-sql,pyspark-sql,parquet,Apache Spark,Pyspark,Apache Spark Sql,Pyspark Sql,Parquet,在下面的Databricks博客摘录中,声明如Spark 1.3所述,如果随着时间的推移,新字段被添加到拼花地板模式中,它们将被自动检测和处理(我假设在该字段被引入拼花地板文件之前的时间段内为该字段插入空值) 此功能不适用于我--例如,如果我使用此命令读取所有月份的数据: df=spark.read.parquet('/mnt/waldo/mixpanel/formatted/parquet/') 然后尝试查询其中一个新添加的字段,截至8月,未找到该字段 但是,如果我只是阅读当月的数据: df=

在下面的Databricks博客摘录中,声明如Spark 1.3所述,如果随着时间的推移,新字段被添加到拼花地板模式中,它们将被自动检测和处理(我假设在该字段被引入拼花地板文件之前的时间段内为该字段插入空值)

此功能不适用于我--例如,如果我使用此命令读取所有月份的数据:

df=spark.read.parquet('/mnt/waldo/mixpanel/formatted/parquet/')

然后尝试查询其中一个新添加的字段,截至8月,未找到该字段

但是,如果我只是阅读当月的数据:

df=spark.read.parquet('/mnt/waldo/mixpanel/formatted/parquet/eventmonth=2018-08-01')

然后,该字段用于查询

知道我做错了什么吗?谢谢

在ApacheSpark1.3版本中,我们向该源代码添加了两个主要特性。首先,在拼花地板中存储大量数据的组织通常会发现,随着时间的推移,他们会通过添加或删除列来改进模式。在这个版本中,我们添加了一个新的功能,它将扫描所有文件的元数据,合并模式以获得数据的统一表示。此功能允许开发人员在模式超时更改时读取数据,而无需执行昂贵的手动转换。


在读取拼花文件时,需要特别要求在需要时合并模式;否则,作为速度优化,Spark将只读取遇到的第一个分区的模式,并假设所有分区都具有相同的模式

使用:

df=spark.read.option(“mergeSchema”、“true”).parquet('/mnt/waldo/mixpanel/formatted/parquet/'))



我试图在一次编辑中纠正这一点,但显然被拒绝了:将“mergedSchema”更改为“mergeSchema”,它可以完美地工作!谢谢你,瑞塔!我已经修复了选项名称中的输入错误。谢谢你的反馈。