[ 
https://issues.apache.org/jira/browse/BEAM-12631?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17478262#comment-17478262
 ] 

Kenneth Knowles commented on BEAM-12631:
----------------------------------------

We tend to prefer passing in functions for just the parts where it is safe to 
provide custom behavior; this is generally better than inheritance + override. 
In this case, I think the runner is expected to choose a number of splits that 
work best. [~chamikara] may have some ideas about the design intention.

> Allow Inheritance from KafkaUnboundedSource
> -------------------------------------------
>
>                 Key: BEAM-12631
>                 URL: https://issues.apache.org/jira/browse/BEAM-12631
>             Project: Beam
>          Issue Type: New Feature
>          Components: io-java-kafka
>            Reporter: HongXiang Ren
>            Priority: P3
>   Original Estimate: 4h
>  Remaining Estimate: 4h
>
> Reason:
> We have dataflow to call one internal API (the API call take 60ms). So we 
> want to start more threads to call this API. Kafka IO thread is control by 
> split by default. And split is control by total partitions and system 
> suggestion number. And system suggestion number is 4 * max workers. which is 
> too low for us.  
> Solution:
> Use facture to allow user inheritance KafkaUnboundedSource.  and override the 
> split function like
>  
> {code:java}
> // code placeholder
>     @Override
>     public List<KafkaUnboundedSource<K, V>> split(int desiredNumSplits, 
> PipelineOptions options)
>             throws Exception {
>         int split = this.getMaxSplits();
>         if(split <= 0){
>             return super.split(desiredNumSplits, options);
>         }else{
>             return super.split(split, options);
>         }
>     }
> {code}
>  this may also useful for Override other feature of the KafkaUnboundedSource 
> without copy all the io code.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to