Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.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
Scala 将RDD保存为文本文件会导致FileAlreadyExists异常。如何在每次程序加载时创建新文件并使用FileUtils删除旧文件_Scala_Apache Spark_Fileutils - Fatal编程技术网

Scala 将RDD保存为文本文件会导致FileAlreadyExists异常。如何在每次程序加载时创建新文件并使用FileUtils删除旧文件

Scala 将RDD保存为文本文件会导致FileAlreadyExists异常。如何在每次程序加载时创建新文件并使用FileUtils删除旧文件,scala,apache-spark,fileutils,Scala,Apache Spark,Fileutils,代码: 第一次程序运行良好。再次运行时,它会引发文件AlreadyExists的异常。 我想使用FileUtilsjava功能解决这个问题,并将rdd保存为文本文件。为什么不使用数据帧?将RDD[ListBuffer[String]放入RDD[Row]-类似于- val badData:RDD[ListBuffer[String]] = rdd.filter(line => line(1).equals("XX") || line(5).equals("XX")) badData.coal

代码:

第一次程序运行良好。再次运行时,它会引发文件AlreadyExists的异常。
我想使用
FileUtils
java功能解决这个问题,并将rdd保存为文本文件。

为什么不使用数据帧?将
RDD[ListBuffer[String]
放入
RDD[Row]
-类似于-

val badData:RDD[ListBuffer[String]] = rdd.filter(line => line(1).equals("XX") || line(5).equals("XX"))
badData.coalesce(1).saveAsTextFile(propForFile.getString("badDataFilePath"))

为什么不使用数据帧?将
RDD[ListBuffer[String]
放入
RDD[Row]
-类似于-

val badData:RDD[ListBuffer[String]] = rdd.filter(line => line(1).equals("XX") || line(5).equals("XX"))
badData.coalesce(1).saveAsTextFile(propForFile.getString("badDataFilePath"))

将文件写入指定路径之前,请删除已存在的路径

import org.apache.spark.sql.{Row, SparkSession}
import org.apache.spark.sql.types.{DoubleType, StringType, StructField, StructType}
val badData:RDD[ListBuffer[String]] = rdd.map(line => 
  Row(line(0), line(1)... line(n))
 .filter(row => filter stuff)
badData.toDF().write.mode(SaveMode.Overwrite)

然后执行通常的写入过程。希望这能解决问题。

在将文件写入指定路径之前,请删除已存在的路径

import org.apache.spark.sql.{Row, SparkSession}
import org.apache.spark.sql.types.{DoubleType, StringType, StructField, StructType}
val badData:RDD[ListBuffer[String]] = rdd.map(line => 
  Row(line(0), line(1)... line(n))
 .filter(row => filter stuff)
badData.toDF().write.mode(SaveMode.Overwrite)
val fs = FileSystem.get(sc.hadoopConfiguration)
fs.delete(new Path(bad/data/file/path), true)
然后执行通常的写入过程。希望这可以解决问题

val fs = FileSystem.get(sc.hadoopConfiguration)
fs.delete(new Path(bad/data/file/path), true)
将文件名作为字符串传递给方法,如果存在一个或多个目录或文件,它将删除。在将其写入输出路径之前,请使用这段代码


将文件名作为字符串传递给方法,如果存在目录或文件,它将删除。在将其写入输出路径之前使用这段代码。

除此之外,这家伙可能以您喜欢的方式使用FileUtils库。除此之外,这家伙可能以您喜欢的方式使用FileUtils库,而这可能会回答问题thors的问题,它缺少一些解释性的词语和指向文档的链接。如果没有一些短语,原始代码片段不会很有帮助。您也可能会发现它非常有帮助。请编辑您的答案。虽然这可能回答了作者的问题,但它缺少一些解释性词语和指向文档的链接。原始代码片段对如果没有一些相关的短语,你可能也会觉得很有帮助。请编辑你的答案。