【发布时间】:2017-12-24 22:01:55
【问题描述】:
我正在尝试读取 scala 中路径的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)
我检查了DataFrameReader 的options 方法,但似乎没有任何类似于ignore_if_missing 的选项。
此外,这些路径可以是hdfs 或s3(此Seq 作为方法参数传递),在阅读时,我不知道路径是s3 还是hdfs 所以可以'不要使用s3 或hdfs 特定的API 来检查是否存在。
【问题讨论】:
标签: scala apache-spark parquet