Apache spark 可以将spark配置为将空数据集推断为空模式
我们在年/月/日/小时内划分了许多拼花地板数据集 只有一个Apache spark 可以将spark配置为将空数据集推断为空模式,apache-spark,amazon-emr,Apache Spark,Amazon Emr,我们在年/月/日/小时内划分了许多拼花地板数据集 只有一个\u SUCCESS文件的几个小时是空的 我们实现了迭代所有分区并执行工作的作业。我们在打开空数据集时遇到问题。与org.apache.spark.sql.AnalysisException冲突:无法推断拼花地板的架构。必须手动指定。 (使用EMR5.3.0-我们正在努力摆脱依赖,以便升级到更高版本) 火花壳示例: Welcome to ____ __ / __/__ ___ _____/
\u SUCCESS
文件的几个小时是空的
我们实现了迭代所有分区并执行工作的作业。我们在打开空数据集时遇到问题。与org.apache.spark.sql.AnalysisException冲突:无法推断拼花地板的架构。必须手动指定。
(使用EMR5.3.0-我们正在努力摆脱依赖,以便升级到更高版本)
火花壳示例:
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 2.1.0
/_/
Using Scala version 2.11.8 (OpenJDK 64-Bit Server VM, Java 1.8.0_121)
Type in expressions to have them evaluated.
Type :help for more information.
scala> val df = spark.read.parquet("s3://some-bucket/empty-dataset/")
org.apache.spark.sql.AnalysisException: Unable to infer schema for Parquet. It must be specified manually.;
at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$8.apply(DataSource.scala:189)
at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$8.apply(DataSource.scala:189)
正如spark所说,我可以指定一个模式,但这对我来说是不切实际的,因为模式很大,每个分区都不同(不要问)
我的首选解决方案是,如果可以将spark配置为将空数据集推断为空模式 理想情况下
spark.read.parquet
应采用paramignoreEmptyFiles=true
,不幸的是,这不受支持
您所能做的最好的事情是,在读取之前过滤空目录Hi。把这个作为答案,我接受它作为答案。