[ 
https://issues.apache.org/jira/browse/FLINK-18982?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ryan Tao updated FLINK-18982:
-----------------------------
    Description: 
_InputFormat_ has inherited from _InputSplitSource_. Based on basic Java 
knowledge, these two methods do not need to be written here, which may easily 
lead to ambiguity and duplicated. 

And the behavior of these two methods should belong to _InputSplitSource_ 
instead of _InputFormat. (about split)_

InputFormat:
{code:java}
public interface InputFormat<OT, T extends InputSplit> extends 
InputSplitSource<T>, Serializable {
    ...
    @Override
    T[] createInputSplits(int minNumSplits) throws IOException;
    @Override
    InputSplitAssigner getInputSplitAssigner(T[] inputSplits);
    ...
}
{code}
 InputSplitSource:
{code:java}
public interface InputSplitSource<T extends InputSplit> extends Serializable {
   T[] createInputSplits(int minNumSplits) throws Exception; 
   InputSplitAssigner getInputSplitAssigner(T[] inputSplits);
}{code}
As for the reason, watching the commit history, we can find that these two 
methods appeared in _InputFormat_ before _InputSplitSource_. Later, they were 
taken to InputSplitSource separately, but they were not removed in 
_InputFormat_.

Another point is that the _InputSplitSource throws an Exception_, as it should 
be. (Subclasses of InputFormat throw specific exception.)

And the duplicated _InputFormat extends Serializable_.

  was:
_InputFormat_ has inherited from _InputSplitSource_. Based on basic Java 
knowledge, these two methods do not need to be written here, which may easily 
lead to ambiguity and duplicated. 

And the behavior of these two methods should belong to _InputSplitSource_ 
instead of _InputFormat. (about split)_

InputFormat:
{code:java}
public interface InputFormat<OT, T extends InputSplit> extends 
InputSplitSource<T>, Serializable {
    ...
    @Override
    T[] createInputSplits(int minNumSplits) throws IOException;
    @Override
    InputSplitAssigner getInputSplitAssigner(T[] inputSplits);
    ...
}
{code}
 InputSplitSource:
{code:java}
public interface InputSplitSource<T extends InputSplit> extends Serializable {
   T[] createInputSplits(int minNumSplits) throws Exception; 
   InputSplitAssigner getInputSplitAssigner(T[] inputSplits);
}{code}
As for the reason, watching the commit history, we can find that these two 
methods appeared in _InputFormat_ before _InputSplitSource_. Later, they were 
taken to InputSplitSource separately, but they were not removed in 
_InputFormat_.

Another point is that the InputSplitSource throws an Exception, as it should 
be. (Subclasses of InputFormat throw specific exception.)


> InputFormat should remove unnecessary override methods
> ------------------------------------------------------
>
>                 Key: FLINK-18982
>                 URL: https://issues.apache.org/jira/browse/FLINK-18982
>             Project: Flink
>          Issue Type: Improvement
>          Components: API / Core
>    Affects Versions: 1.11.1
>            Reporter: Ryan Tao
>            Priority: Major
>              Labels: pull-request-available
>
> _InputFormat_ has inherited from _InputSplitSource_. Based on basic Java 
> knowledge, these two methods do not need to be written here, which may easily 
> lead to ambiguity and duplicated. 
> And the behavior of these two methods should belong to _InputSplitSource_ 
> instead of _InputFormat. (about split)_
> InputFormat:
> {code:java}
> public interface InputFormat<OT, T extends InputSplit> extends 
> InputSplitSource<T>, Serializable {
>     ...
>     @Override
>     T[] createInputSplits(int minNumSplits) throws IOException;
>     @Override
>     InputSplitAssigner getInputSplitAssigner(T[] inputSplits);
>     ...
> }
> {code}
>  InputSplitSource:
> {code:java}
> public interface InputSplitSource<T extends InputSplit> extends Serializable {
>    T[] createInputSplits(int minNumSplits) throws Exception; 
>    InputSplitAssigner getInputSplitAssigner(T[] inputSplits);
> }{code}
> As for the reason, watching the commit history, we can find that these two 
> methods appeared in _InputFormat_ before _InputSplitSource_. Later, they were 
> taken to InputSplitSource separately, but they were not removed in 
> _InputFormat_.
> Another point is that the _InputSplitSource throws an Exception_, as it 
> should be. (Subclasses of InputFormat throw specific exception.)
> And the duplicated _InputFormat extends Serializable_.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to