2016-04-04 22 views
0

RDD.saveをテキストファイルとして使用して区切られた形式のテキストファイルを保存するにはどうすればよいですか?また、データフレーム列をヘッダーとして書き込む必要があります。RDDテキストファイルとして保存

は大きなRDDSについては、下記より簡単な方法は...

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"); 
    } 

答えて

0

お返事ありがとうございます。以下は働いた

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); 
0

ありますがSQLContext.readJava API)を使用して読んで同じように、あなたがDataFrame.writeJava API)を使用する必要があります。

他の方法は推奨されていません(SQLContext.parquetFile、SQLContext.jsonFileなど)。

関連する問題