@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, rejectUnknownMandatoryKeysprotected 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.