用户类引发异常:org.apache.spark.sql.AnalysisException:无法推断Parquet的架



我正在实现一个spark java代码,数据集输入=spark.read((.parquet(configuration.getInputDataLocation(((;

但是inputDataLocation(Azure存储帐户容器中的文件夹(可能没有任何数据,并且在这种用例中抛出异常,用户类引发异常:org.apache.spark.sql.AnalysisException:无法推断Parquet的架构。必须手动指定。

有没有一种简单的方法可以预先检查文件夹是否为空,然后只处理上面写的spark java代码行。

为什么不在输入目录中尝试读取以检查它是否存在?

final boolean exists;
try {
exists = file.getFileSystem(spark.sparkContext().hadoopConfiguration()).getFileStatus(file).isFile();
//exists = dir.getFileSystem(spark.sparkContext().hadoopConfiguration()).listStatus(dir).length // (0 length is an empty dir)
} catch (IOException e) {
throw new UncheckedIOException(e);
}

if (exists) {
return spark.read().parquet(configuration.getInputDataLocation());
} else {
LOG.warn("File directory '{}' does not exist", file);
return spark.emptyDataset(SOME_ENCODER);
}
}

相关内容

  • 没有找到相关文章

最新更新