我正在尝试从本地文件系统读取CSV文件,从中创建数据框,删除文件并返回数据框架。是的,我必须删除它。由于除删除外,所有内容都懒惰地完成,因此该应用程序失败,因为执行代码时找不到文件。
def do_something() : DataFrame {
val file = File.createTempFile("query2Output", ".csv")
//some code which writes to the file
val df = sqlContext.read
.format("com.databricks.spark.csv")
.option("header", "true")
.option("mode", "DROPMALFORMED")
.load(file.getPath)
file.delete
df
}
您可以缓存数据框并运行,即在RDD上计数以在创建数据框后立即执行阅读:
val df = /* reading*/.cache()
df.count()
file.delete()
但是,如果处理失败,那么您将没有可能重新创建数据帧