Java RDD另存为文本文件

Java RDD另存为文本文件,java,csv,apache-spark,rdd,Java,Csv,Apache Spark,Rdd,如何使用RDD.save as text file?以分隔格式保存文本文件?。。此外,我还需要将dataframe列作为标题写入。。我如何做到这一点 对于大型RDD,有没有比下面更简单的方法 List<Row> data = resultFrame.toJavaRDD().collect(); try { File file = new File(fileName); if (!file.exists()) { file.create

如何使用RDD.save as text file?以分隔格式保存文本文件?。。此外,我还需要将dataframe列作为标题写入。。我如何做到这一点

对于大型RDD,有没有比下面更简单的方法

List<Row> data = resultFrame.toJavaRDD().collect();
    try {
      File file = new File(fileName);

      if (!file.exists()) {
        file.createNewFile();
      }

      FileWriter fw = new FileWriter(file);

      BufferedWriter bufferedWriter = new BufferedWriter(fw);
      for (Row dataRow:data)
      {
        StringBuilder row  = new StringBuilder();
          for(int i = 0; i<dataRow.size();i++)
          {
            row.append(dataRow.get(i));
            if (i != dataRow.size()-1)
            {
              row.append("~");
            }

          }
        bufferedWriter.write(row.toString());
        bufferedWriter.write("\n");
        row.setLength(0);
      }
      bufferedWriter.close();
    } catch (IOException e) {
      LOGGER.error("Error in writing to the ruf file");
    }
List data=resultFrame.toJavaRDD().collect();
试一试{
文件=新文件(文件名);
如果(!file.exists()){
createNewFile();
}
FileWriter fw=新的FileWriter(文件);
BufferedWriter BufferedWriter=新的BufferedWriter(fw);
for(行数据行:数据)
{
StringBuilder行=新建StringBuilder();
对于(inti=0;i,正如您使用SQLContext.read()读取一样,您需要使用DataFrame.write()

不推荐使用其他方法(例如SQLContext.parquetFile、SQLContext.jsonFile)。

正如使用SQLContext.read()读取一样,您需要使用DataFrame.write()


不推荐使用其他方法(例如SQLContext.parquetFile、SQLContext.jsonFile)。

感谢您的回复。以下方法有效

public class TildaDelimiter implements Function<Row, String> {

  public String call(Row r) {
    return r.mkString("~");
  }
}

in my save as i did the following to save as a ~ delimited file

 resultFrame.toJavaRDD().map(new TildaDelimiter()).coalesce(1, true)
            .saveAsTextFile(folderName);
public类TildaDelimiter实现函数{
公共字符串调用(r行){
返回r.mkString(“~”);
}
}
在“另存为”中,我执行了以下操作以另存为分隔符的文件
resultFrame.toJavaRDD().map(新的TildaDelimiter()).coalesce(1,true)
.saveAsTextFile(folderName);

感谢您的回复。以下措施奏效了

public class TildaDelimiter implements Function<Row, String> {

  public String call(Row r) {
    return r.mkString("~");
  }
}

in my save as i did the following to save as a ~ delimited file

 resultFrame.toJavaRDD().map(new TildaDelimiter()).coalesce(1, true)
            .saveAsTextFile(folderName);
public类TildaDelimiter实现函数{
公共字符串调用(r行){
返回r.mkString(“~”);
}
}
在“另存为”中,我执行了以下操作以另存为分隔符的文件
resultFrame.toJavaRDD().map(新的TildaDelimiter()).coalesce(1,true)
.saveAsTextFile(folderName);