用户 class 抛出异常:org.apache.spark.sql.AnalysisException:无法推断 Parquet 的架构。必须手动指定
User class threw exception: org.apache.spark.sql.AnalysisException: Unable to infer schema for Parquet. It must be specified manually
我正在实施一个 spark java 代码,
数据集输入 = spark.read().parquet(configuration.getInputDataLocation());
但是 inputDataLocation(Azure 存储帐户容器中的一个文件夹)可能没有任何数据,在这种情况下会抛出异常,
用户 class 抛出异常: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);
}
}
我正在实施一个 spark java 代码, 数据集输入 = spark.read().parquet(configuration.getInputDataLocation());
但是 inputDataLocation(Azure 存储帐户容器中的一个文件夹)可能没有任何数据,在这种情况下会抛出异常, 用户 class 抛出异常: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);
}
}