在Spark中阅读时如何在Scala中捕获文件错误?

时间:2018-09-13 19:42:09

标签: scala apache-spark

我有一个应用程序,该应用程序从嵌套的目录结构/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循环并逐个读取每个文件。

0 个答案:

没有答案