我有一个应用程序,该应用程序从嵌套的目录结构/example/to/data/file
中读取多个数据文件。有时这些目录可能不包含任何数据,损坏的数据等。我需要捕获这些错误并进行计数,并指定文件名,该文件的目录以及错误所在。
当前,我正在做的是一次读取所有文件并创建一个数据框。我不知道是否有一种方法可以指定是否可以逐个读取哪个文件为空,哪个文件已损坏,哪个目录没有数据。这是我当前没有错误处理的实现:
val dir = new File(inputPath)
val listBuffer = new ListBuffer[String]
for(f <- walkTree(dir) if f.getName.length() == 14) listBuffer.append("file://" + f.toString)
listBuffer.remove(0)
val schema = Schemas.data1
val recordDF = spark.sqlContext.createDataFrame(spark.sparkContext.textFile(listBuffer.mkString(","))
.map(x => UDF.getRecord1Row(x)), schema)
您可以看到我一次性读取了所有数据,有没有一种方法可以通过一次性读取所有文件来捕获错误,或者我必须进行for循环并逐个读取每个文件。