开发者社区> 问答> 正文

可以将spark配置为将空数据集推断为空模式吗

宋淑婷 2019-04-23 11:18:32 684

我们有很多parquet数据集,按年/月/日/小时划分。

只有一个_SUCCESS文件,其中一些时间是空的。

我们实现迭代所有分区并执行工作的作业。打开空数据集时遇到问题。org.apache.spark.sql.AnalysisException: Unable to infer schema for Parquet. It must be specified manually.

(使用EMR5.3.0 - 我们正在努力摆脱依赖,以便我们可以升级到更高版本)

Spark-shell示例:

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配置为将空数据集推断为空模式。

分享到
取消 提交回答
全部回答(1)
  • 宋淑婷
    2019-07-17 23:34:02

    理想情况下spark.read.parquet应该采取param ignoreEmptyFiles=true,但这不受支持。

    可以在读取之前过滤空目录

    0 0
+ 订阅

大数据计算实践乐园,近距离学习前沿技术

推荐文章
相似问题