Spark: leia o arquivo apenas se o caminho existir
Estou tentando ler os arquivos presentes emSequence
de caminhos em scala. Abaixo está o código de exemplo (pseudo):
val paths = Seq[String] //Seq of paths
val dataframe = spark.read.parquet(paths: _*)
Agora, na sequência acima, existem alguns caminhos, enquanto outros não. Existe alguma maneira de ignorar os caminhos ausentes durante a leituraparquet
arquivos (para evitarorg.apache.spark.sql.AnalysisException: Path does not exist
)?
Eu tentei o abaixo e parece que está funcionando, mas então, acabo lendo o mesmo caminho duas vezes, algo que eu gostaria de evitar:
val filteredPaths = paths.filter(p => Try(spark.read.parquet(p)).isSuccess)
Eu verifiquei ooptions
método paraDataFrameReader
mas isso não parece ter nenhuma opção semelhante aignore_if_missing
.
Além disso, esses caminhos podem serhdfs
ous3
(estaSeq
é passado como um argumento de método) e durante a leitura, não sei se um caminho és3
ouhdfs
então não pode usars3
ouhdfs
API específica para verificar a existência.