代码:
val badData:RDD[ListBuffer[String]] = rdd.filter(line => line(1).equals("XX") || line(5).equals("XX"))
badData.coalesce(1).saveAsTextFile(propForFile.getString("badDataFilePath"))
第一次程序运行正常。再次运行时,它将引发文件AlreadyExists的异常。
我想使用FileUtils
Java功能来解决此问题,并将rdd另存为文本文件。
答案 0 :(得分:1)
在将文件写入指定路径之前,请删除现有路径。
val fs = FileSystem.get(sc.hadoopConfiguration)
fs.delete(new Path(bad/data/file/path), true)
然后执行您通常的写入过程。希望这能解决问题。
答案 1 :(得分:1)
import org.apache.hadoop.fs.FileSystem
import org.apache.hadoop.fs.Path
val fs = spark.SparkContext.hadoopCofigurations
if (fs.exists(new Path(path/to/the/files)))
fs.delete(new Path(path/to/the/files), true)
将文件名作为String传递给方法,如果存在目录或文件,它将删除。在将其写入输出路径之前,请使用这段代码。
答案 2 :(得分:0)
为什么不使用DataFrames?将 SampleContext = new SampleContext(ConnectionString);
放入RDD[ListBuffer[String]
-类似于-
RDD[Row]