Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark Spark-从csv文件创建数据帧并删除该文件_Apache Spark_Spark Dataframe - Fatal编程技术网

Apache spark Spark-从csv文件创建数据帧并删除该文件

Apache spark Spark-从csv文件创建数据帧并删除该文件,apache-spark,spark-dataframe,Apache Spark,Spark Dataframe,我试图从本地文件系统读取csv文件,从中创建数据帧,删除文件并返回数据帧。是的,我必须删除它。 由于除了删除之外,所有操作都是延迟完成的,因此应用程序会失败,因为它在执行代码时找不到文件 def do_something() : DataFrame { val file = File.createTempFile("query2Output", ".csv") //some code which writes to the file val df =

我试图从本地文件系统读取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()

但是,如果处理失败,则无法重新创建数据帧

谢谢!我尝试了.cache(),但没有意识到我必须调用.count()(或任何其他操作)才能使其生效。它很懒:)顺便问一下,为什么df.count()不够用?@Raytracer,因为
count
只计算count。下一个操作还将从磁盘读取文件。如果在
count
之前执行
cache
,则
count
数据集将缓存在内存中,不会从磁盘读取