[
https://issues.apache.org/jira/browse/HADOOP-15229?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16700839#comment-16700839
]
Owen O'Malley commented on HADOOP-15229:
----------------------------------------
Sorry for coming into this late and for bike shedding. *grin*
I'd suggest that the main builder API be an interface rather than abstract
class. Maybe something like:
{code:java}
public interface ReaderBuilder {
/**
* Test whether the given FileSystem supports the given option.
*/
boolean supportsOption(String name);
// repeat optional(...) and require(...) for long, double, and boolean values
/**
* Set an optional option to the specified value.
*/
ReaderBuilder optional(String name, String value);
/**
* Set a required option to the specified value.
*/
ReaderBuilder require(String name, String value);
/**
* Use the options to build the stream.
*/
FSDataInputStream build() throws IOException;
}
public abstract class FileSystem ... {
...
ReaderBuilder openWithOptions(Path filename) throws IOException;
}
{code}
This minimizes the public API changes and exposure. I think such an option
builder could start public, evolving.
> Add FileSystem builder-based openFile() API to match createFile()
> -----------------------------------------------------------------
>
> Key: HADOOP-15229
> URL: https://issues.apache.org/jira/browse/HADOOP-15229
> Project: Hadoop Common
> Issue Type: New Feature
> Components: fs, fs/azure, fs/s3
> Affects Versions: 3.0.0
> Reporter: Steve Loughran
> Assignee: Steve Loughran
> Priority: Major
> Attachments: HADOOP-15229-001.patch, HADOOP-15229-002.patch,
> HADOOP-15229-003.patch, HADOOP-15229-004.patch, HADOOP-15229-004.patch,
> HADOOP-15229-005.patch, HADOOP-15229-006.patch
>
>
> Replicate HDFS-1170 and HADOOP-14365 with an API to open files.
> A key requirement of this is not HDFS, it's to put in the fadvise policy for
> working with object stores, where getting the decision to do a full GET and
> TCP abort on seek vs smaller GETs is fundamentally different: the wrong
> option can cost you minutes. S3A and Azure both have adaptive policies now
> (first backward seek), but they still don't do it that well.
> Columnar formats (ORC, Parquet) should be able to say "fs.input.fadvise"
> "random" as an option when they open files; I can imagine other options too.
> The Builder model of [~eddyxu] is the one to mimic, method for method.
> Ideally with as much code reuse as possible
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]