-1
これは私がスパーク1.6.1を使用していますし、私のコードで私はorg.apache.hadoop.mapred.lib.MultipleTextOutputFormatから派生したクラスOUTPUTFORMATを書くいるsaveAsHadoopFile()
方法を使用してBufferedOutputStreamの代替品ですか?
@Override
protected RecordWriter<String, String> getBaseRecordWriter(
FileSystem fs, JobConf job, String name, Progressable arg3)
throws IOException {
Path file2 = FileOutputFormat.getOutputPath(job);
String path = file2.toUri().getPath()+File.separator+ name;
FSDataOutputStream fileOut = new FSDataOutputStream(new BufferedOutputStream(new FileOutputStream(path, true),104857600)), null);
return new LineRecordWriter<String, String>(fileOut, "\t");
}
私のコードスニペットです私は上記の方法を上書きします。
クラスタでは、出力ファイルに壊れたレコードが書き込まれます。 私はそれはそれは、すぐにバッファがいっぱいになるように書き込むので、BufferedOutputStream
FSDataOutputStream fileOut = new FSDataOutputStream(
new BufferedOutputStream(new FileOutputStream(path, true),104857600)), null);
に私たちは、
bufferedOutputStream
のためのあらゆる選択肢を持つことができるためであると考えています。
注:コードを更新しました。ご不便おかけしてすみません。
あなたのコードにはBufferedOutputStreamはありません。データ破損を引き起こしているというあなたの信念の証拠はもちろんです。あなたが何を求めているのか不明確で、XY問題が起こりそうです。 – EJP
BufferedOutputStreamが引き起こす唯一の破損は、切り捨てられたファイルですが、flush()またはclose()に失敗した場合のみです。 –
コードを更新しました。私は異なる組み合わせを試していたので、間違ったものを得ました。 –