我正在使用csv文件中的输入进行一些计算,并将结果数据帧按顺序保存到csv文件中,但是每次创建新文件时,它仅将最后一个数据帧保存到csv文件中。
数据框的示例代码:
Path dateFilePath=new Path("Dates.csv");
FileSystem fileSystem=FileSystem.get(configuration);
BufferedReader br=new BufferedReader(new InputStreamReader(fileSystem.open(dateFilePath)));
int flag=0;
String line;
line=br.readLine();
while (line != null){
ds5.write().format("csv").option("compression","none").option("header","false").mode("append").save(Directory+"outputFiles");
Average.mergeFiles(Directory+"outputFiles",Directory+outputFileName);
}
public static void mergeFiles(String srcPath,String destPath) throws IOException
{
FileSystem fileSystem=null;
try {
Path srcFiles=new Path(srcPath);
Path srcFile=new Path(destPath);
Path dest=new Path("DirectorySummaries.csv");
configuration.setBoolean("fs.hdfs.impl.disable.cache", true);
fileSystem=FileSystem.get(configuration);
FileUtil.copyMerge(fileSystem,srcFiles,fileSystem,srcFile,true,configuration,"");
FSDataOutputStream output=null;
FSDataInputStream input=null;
if(!outputFileExits)
{
System.out.println("Creating File");
output=fileSystem.create(dest,false);
fileSystem.close();
}
fileSystem=FileSystem.get(configuration);
output=fileSystem.append(dest);
input=fileSystem.open(srcFile);
IOUtils.copyBytes(input, output,configuration);
fileSystem.delete(srcFile,false);
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {
fileSystem.close();
}
}
由于save方法的输出是各种csv文件,因此请使用mergefiles函数将其合并。 有人可以帮忙如何依次迭代输出并将其保存在csv文件中吗?