@InterfaceAudience.Public @InterfaceStability.Evolving public abstract class FSDataOutputStreamBuilder<S extends FSDataOutputStream,B extends FSDataOutputStreamBuilder<S,B>> extends Object
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, opt(String, int)
and 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.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 Set<String> |
getMandatoryKeys()
Get all the keys that are set as mandatory keys.
|
protected Configuration |
getOptions() |
protected Path |
getPath() |
protected FsPermission |
getPermission() |
protected Progressable |
getProgress() |
protected short |
getReplication() |
protected 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 |
must(String key,
boolean value)
Set mandatory boolean option.
|
B |
must(String key,
double value)
Set mandatory double option.
|
B |
must(String key,
float value)
Set mandatory float option.
|
B |
must(String key,
int value)
Set mandatory int option.
|
B |
must(String key,
String... values)
Set a string array as mandatory option.
|
B |
must(String key,
String value)
Set mandatory option to the Builder.
|
B |
opt(String key,
boolean value)
Set optional boolean parameter for the Builder.
|
B |
opt(String key,
double value)
Set optional double parameter for the Builder.
|
B |
opt(String key,
float value)
Set optional float parameter for the Builder.
|
B |
opt(String key,
int value)
Set optional int parameter for the Builder.
|
B |
opt(String key,
String... values)
Set an array of string values as optional parameter for the Builder.
|
B |
opt(String key,
String value)
Set optional Builder parameter.
|
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.
|
protected FSDataOutputStreamBuilder(@Nonnull FileSystem fileSystem, @Nonnull Path p)
protected abstract B getThisBuilder()
protected FileSystem getFS()
protected Path getPath()
protected FsPermission getPermission()
public B permission(@Nonnull FsPermission perm)
protected int getBufferSize()
public B bufferSize(int bufSize)
protected short getReplication()
public B replication(short replica)
protected long getBlockSize()
public B blockSize(long blkSize)
protected boolean isRecursive()
public B recursive()
protected Progressable getProgress()
public B progress(@Nonnull Progressable prog)
protected EnumSet<CreateFlag> getFlags()
public B create()
public B overwrite(boolean overwrite)
build()
if the file exists.public B append()
protected org.apache.hadoop.fs.Options.ChecksumOpt getChecksumOpt()
public B checksumOpt(@Nonnull org.apache.hadoop.fs.Options.ChecksumOpt chksumOpt)
public B opt(@Nonnull String key, boolean value)
opt(String, String)
public B opt(@Nonnull String key, int value)
opt(String, String)
public B opt(@Nonnull String key, float value)
opt(String, String)
public B opt(@Nonnull String key, double value)
opt(String, String)
public B opt(@Nonnull String key, @Nonnull String... values)
opt(String, String)
public B must(@Nonnull String key, @Nonnull String value)
FileSystem
,
the client should expect build()
throws IllegalArgumentException.public B must(@Nonnull String key, boolean value)
must(String, String)
public B must(@Nonnull String key, int value)
must(String, String)
public B must(@Nonnull String key, float value)
must(String, String)
public B must(@Nonnull String key, double value)
must(String, String)
public B must(@Nonnull String key, @Nonnull String... values)
must(String, String)
protected Configuration getOptions()
protected Set<String> getMandatoryKeys()
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 © 2017 Apache Software Foundation. All rights reserved.