我有一个▶ class A
▷ def a1 ; puts @a ; end
▷ def a2 ; @a = 42 ; end
▷ end
▶ a = A.new
#⇒ #<A:0x000000026d2908>
▶ a.a2
#⇒ 42
▶ a.a1
#⇒ 42
,其中包含一些文件的路径。
该数组是自动生成的,因此无法保证文件存在。
我想阅读所有这些路径,将现有路径加载到RDD中,并忽略不存在的路径。
我尝试过以下操作:
Array[String]
但看起来它没有成功避免不存在的文件,我在尝试import scala.util.Try
val arrayOfFilePaths: Array[String] = ["path1", "path2", "path3", "path4"]
val allRecords = sc.union(arrayOfFilePaths.map(p => Try(sc.textFile(p))).filter(_.isSuccess).map(_.get))
时收到以下错误:
allRecords.collect()
这里有什么错误吗?
答案 0 :(得分:3)
好的,我已经找到了解决方案。
我在加载文件之前已经过滤了数组。
import java.nio.file.{Paths, Files}
val filteredPaths = arrayOfFilePaths.filter(p => Files.exists(Paths.get(p))).mkString(",")
然后我可以加载这些文件
val allRecords = sc.textFile(filteredPaths)