我正嘗試閱讀scala中Paths的Sequence
文件。下面是樣本(僞)代碼:Spark:只有在路徑存在的情況下才能讀取文件
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來檢查存在。
「路徑」可以是本地的'hdfs'路徑或's3'路徑。不確定'File.exists'是否適用於's3'。 –
如果路徑是HDFS/S3路徑(通常與Spark一起使用),那麼需要稍微不同的API來檢查路徑存在。 [@DarshanMehta你擊敗了我3秒:)] –
@TzachZohar哈哈是的。我現在已經更新了這個問題。 –