@PublicEvolving @NotThreadSafe public final class S3RecoverableFsDataOutputStream extends RecoverableFsDataOutputStream
This class is NOT thread-safe. Concurrent writes tho this stream result in corrupt or lost data.
The close()
method may be called concurrently when cancelling / shutting down.
It will still ensure that local transient resources (like streams and temp files) are cleaned up,
but will not touch data previously persisted in S3.
RecoverableFsDataOutputStream.Committer
Modifier and Type | Method and Description |
---|---|
void |
close()
Closes this stream.
|
RecoverableFsDataOutputStream.Committer |
closeForCommit()
Closes the stream, ensuring persistence of all data (similar to
FSDataOutputStream.sync() ). |
void |
flush()
Flushes the stream, writing any data currently buffered in stream implementation
to the proper output stream.
|
long |
getPos()
Gets the position of the stream (non-negative), defined as the number of bytes
from the beginning of the file to the current writing position.
|
static S3RecoverableFsDataOutputStream |
newStream(org.apache.flink.fs.s3.common.writer.RecoverableMultiPartUpload upload,
FunctionWithException<File,RefCountedFile,IOException> tmpFileCreator,
long userDefinedMinPartSize) |
RecoverableWriter.ResumeRecoverable |
persist()
Ensures all data so far is persistent (similar to
FSDataOutputStream.sync() ) and returns
a handle to recover the stream at the current position. |
static S3RecoverableFsDataOutputStream |
recoverStream(org.apache.flink.fs.s3.common.writer.RecoverableMultiPartUpload upload,
FunctionWithException<File,RefCountedFile,IOException> tmpFileCreator,
long userDefinedMinPartSize,
long bytesBeforeCurrentPart) |
void |
sync()
Flushes the data all the way to the persistent non-volatile storage (for example disks).
|
void |
write(byte[] b,
int off,
int len) |
void |
write(int b) |
write
public void write(int b) throws IOException
write
in class OutputStream
IOException
public void write(byte[] b, int off, int len) throws IOException
write
in class OutputStream
IOException
public void flush() throws IOException
FSDataOutputStream
A completed flush does not mean that the data is necessarily persistent. Data
persistence can is only assumed after calls to FSDataOutputStream.close()
or FSDataOutputStream.sync()
.
Implementation note: This overrides the method defined in OutputStream
as abstract to force implementations of the FSDataOutputStream
to implement
this method directly.
flush
in interface Flushable
flush
in class FSDataOutputStream
IOException
- Thrown if an I/O error occurs while flushing the stream.public long getPos() throws IOException
FSDataOutputStream
This method must report accurately report the current position of the stream. Various components of the high-availability and recovery logic rely on the accurate
getPos
in class FSDataOutputStream
IOException
- Thrown if an I/O error occurs while obtaining the position from
the stream implementation.public void sync() throws IOException
FSDataOutputStream
sync
in class FSDataOutputStream
IOException
- Thrown if an I/O error occurspublic void close() throws IOException
RecoverableFsDataOutputStream
In order to persist all previously written data, one needs to call the
RecoverableFsDataOutputStream.closeForCommit()
method and call RecoverableFsDataOutputStream.Committer.commit()
on the retured
committer object.
close
in interface Closeable
close
in interface AutoCloseable
close
in class RecoverableFsDataOutputStream
IOException
- Thrown if an error occurred during closing.public RecoverableWriter.ResumeRecoverable persist() throws IOException
RecoverableFsDataOutputStream
FSDataOutputStream.sync()
) and returns
a handle to recover the stream at the current position.persist
in class RecoverableFsDataOutputStream
IOException
public RecoverableFsDataOutputStream.Committer closeForCommit() throws IOException
RecoverableFsDataOutputStream
FSDataOutputStream.sync()
).
This returns a Committer that can be used to publish (make visible) the file
that the stream was writing to.closeForCommit
in class RecoverableFsDataOutputStream
IOException
public static S3RecoverableFsDataOutputStream newStream(org.apache.flink.fs.s3.common.writer.RecoverableMultiPartUpload upload, FunctionWithException<File,RefCountedFile,IOException> tmpFileCreator, long userDefinedMinPartSize) throws IOException
IOException
public static S3RecoverableFsDataOutputStream recoverStream(org.apache.flink.fs.s3.common.writer.RecoverableMultiPartUpload upload, FunctionWithException<File,RefCountedFile,IOException> tmpFileCreator, long userDefinedMinPartSize, long bytesBeforeCurrentPart) throws IOException
IOException
Copyright © 2014–2020 The Apache Software Foundation. All rights reserved.