@InterfaceAudience.Public @InterfaceStability.Evolving public abstract class FSDataOutputStreamBuilder<S extends FSDataOutputStream,B extends FSDataOutputStreamBuilder<S,B>> extends AbstractFSBuilderImpl<S,B>
FSDataOutputStream
and its subclasses.
It is used to create FSDataOutputStream
when creating a new file or
appending an existing file on FileSystem
.
By default, it does not create parent directory that do not exist.
FileSystem.createNonRecursive(Path, boolean, int, short, long,
Progressable)
.
To create missing parent directory, use recursive()
.
To be more generic, AbstractFSBuilderImpl.opt(String, int)
and AbstractFSBuilderImpl.must(String, int)
variants provide implementation-agnostic way to customize the builder.
Each FS-specific builder implementation can interpret the FS-specific
options accordingly, for example:
// Don't
if (fs instanceof FooFileSystem) {
FooFileSystem fs = (FooFileSystem) fs;
OutputStream out = dfs.createFile(path)
.optionA()
.optionB("value")
.cache()
.build()
} else if (fs instanceof BarFileSystem) {
...
}
// Do
OutputStream out = fs.createFile(path)
.permission(perm)
.bufferSize(bufSize)
.opt("foofs:option.a", true)
.opt("foofs:option.b", "value")
.opt("barfs:cache", true)
.must("foofs:cache", true)
.must("barfs:cache-size", 256 * 1024 * 1024)
.build();
If the option is not related to the file system, the option will be ignored.
If the option is must, but not supported by the file system, a
IllegalArgumentException
will be thrown.UNKNOWN_MANDATORY_KEY
Modifier | Constructor and Description |
---|---|
protected |
FSDataOutputStreamBuilder(FileSystem fileSystem,
Path p)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
B |
append()
Append to an existing file (optional operation).
|
B |
blockSize(long blkSize)
Set block size.
|
B |
bufferSize(int bufSize)
Set the size of the buffer to be used.
|
abstract S |
build()
Create the FSDataOutputStream to write on the file system.
|
B |
checksumOpt(org.apache.hadoop.fs.Options.ChecksumOpt chksumOpt)
Set checksum opt.
|
B |
create()
Create an FSDataOutputStream at the specified path.
|
protected long |
getBlockSize() |
protected int |
getBufferSize() |
protected org.apache.hadoop.fs.Options.ChecksumOpt |
getChecksumOpt() |
protected EnumSet<CreateFlag> |
getFlags() |
protected FileSystem |
getFS() |
protected FsPermission |
getPermission() |
protected Progressable |
getProgress() |
protected short |
getReplication() |
abstract B |
getThisBuilder()
Return the concrete implementation of the builder instance.
|
protected boolean |
isRecursive()
Return true to create the parent directories if they do not exist.
|
B |
overwrite(boolean overwrite)
Set to true to overwrite the existing file.
|
B |
permission(FsPermission perm)
Set permission for the file.
|
B |
progress(Progressable prog)
Set the facility of reporting progress.
|
B |
recursive()
Create the parent directory if they do not exist.
|
B |
replication(short replica)
Set replication factor.
|
getMandatoryKeys, getOptionalKeys, getOptionalPath, getOptionalPathHandle, getOptions, getPath, getPathHandle, must, must, must, must, must, must, must, opt, opt, opt, opt, opt, opt, opt, rejectUnknownMandatoryKeys, rejectUnknownMandatoryKeys
protected FSDataOutputStreamBuilder(@Nonnull FileSystem fileSystem, @Nonnull Path p)
fileSystem
- file system.p
- the path.public abstract B getThisBuilder()
getThisBuilder
in class AbstractFSBuilderImpl<S extends FSDataOutputStream,B extends FSDataOutputStreamBuilder<S,B>>
protected FileSystem getFS()
protected FsPermission getPermission()
public B permission(@Nonnull FsPermission perm)
perm
- permission.protected int getBufferSize()
public B bufferSize(int bufSize)
bufSize
- buffer size.protected short getReplication()
public B replication(short replica)
replica
- replica.protected long getBlockSize()
public B blockSize(long blkSize)
blkSize
- block size.protected boolean isRecursive()
public B recursive()
protected Progressable getProgress()
public B progress(@Nonnull Progressable prog)
prog
- progress.protected EnumSet<CreateFlag> getFlags()
public B create()
public B overwrite(boolean overwrite)
build()
if the file exists.overwrite
- overrite.public B append()
protected org.apache.hadoop.fs.Options.ChecksumOpt getChecksumOpt()
public B checksumOpt(@Nonnull org.apache.hadoop.fs.Options.ChecksumOpt chksumOpt)
chksumOpt
- check sum opt.public abstract S build() throws IllegalArgumentException, IOException
IllegalArgumentException
- if the parameters are not valid.IOException
- on errors when file system creates or appends the file.Copyright © 2023 Apache Software Foundation. All rights reserved.