этот ответ
аюсь прочитать файлы, присутствующие наSequence
троп в скале. Ниже приведен пример (псевдо) кода:
val paths = Seq[String] //Seq of paths
val dataframe = spark.read.parquet(paths: _*)
Теперь в приведенной выше последовательности некоторые пути существуют, а некоторые нет. Есть ли способ игнорировать пропущенные пути при чтенииparquet
файлы (чтобы избежатьorg.apache.spark.sql.AnalysisException: Path does not exist
)?
Я пробовал нижеприведенное, и это, кажется, работает, но затем я в конечном итоге прочитал один и тот же путь дважды, что я хотел бы избежать:
val filteredPaths = paths.filter(p => Try(spark.read.parquet(p)).isSuccess)
Я проверилoptions
метод дляDataFrameReader
но это, кажется, не имеет никакой опции, которая похожа наignore_if_missing
.
Кроме того, эти пути могут бытьhdfs
или жеs3
(этоSeq
передается в качестве аргумента метода) и во время чтения я не знаю, является ли путьs3
или жеhdfs
так что не могу использоватьs3
или жеhdfs
конкретный API для проверки существования.