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

wangxianghu updated HUDI-981:
-----------------------------
    Description: 
At a high level, HoodieIndex should be irrelevant to engines. So we should 
abstract it.

would be like this
{code:java}
public abstract class AbstractHoodieIndex<T extends HoodieRecordPayload<T>, I, 
K, O, P> implements Serializable {

  protected final HoodieWriteConfig config;

  protected AbstractHoodieIndex(HoodieWriteConfig config) {
    this.config = config;
  }

  public abstract P fetchRecordLocation(HoodieWriteInput<I> inputs, final 
HoodieEngineContext context, HoodieTable<T, I, K, O, P> hoodieTable);

  public abstract HoodieWriteInput<I> tagLocation(HoodieWriteInput<I> inputs, 
HoodieEngineContext context, HoodieTable<T, I, K, O, P> table);

  public abstract HoodieWriteOutput<O> updateLocation(HoodieWriteOutput<O> 
inputs, HoodieEngineContext context, HoodieTable<T, I, K, O, P> table);
...
}{code}
 

  was:
At a high level, HoodieIndex should be irrelevant to engines. So we should 
abstract it.

would be like this
{code:java}
public abstract class AbstractHoodieIndex<T extends HoodieRecordPayload,
    I extends HoodieWriteInput, K extends HoodieWriteKey, O extends 
HoodieWriteOutput, P> implements Serializable {

  protected final HoodieWriteConfig config;

  protected AbstractHoodieIndex(HoodieWriteConfig config) {
    this.config = config;
  }

  public abstract P fetchRecordLocation(I inputs, final HoodieEngineContext 
context, HoodieTable<T, I, K, O, P> hoodieTable);

  public abstract I tagLocation(I inputs, HoodieEngineContext context, 
HoodieTable<T, I, K, O, P> table);

  public abstract O updateLocation(O inputs, HoodieEngineContext context, 
HoodieTable<T, I, K, O, P> table);
   ....

}
{code}
 


> Introduce AbstractHoodieIndex for hudi write client
> ---------------------------------------------------
>
>                 Key: HUDI-981
>                 URL: https://issues.apache.org/jira/browse/HUDI-981
>             Project: Apache Hudi
>          Issue Type: Sub-task
>            Reporter: wangxianghu
>            Assignee: wangxianghu
>            Priority: Major
>
> At a high level, HoodieIndex should be irrelevant to engines. So we should 
> abstract it.
> would be like this
> {code:java}
> public abstract class AbstractHoodieIndex<T extends HoodieRecordPayload<T>, 
> I, K, O, P> implements Serializable {
>   protected final HoodieWriteConfig config;
>   protected AbstractHoodieIndex(HoodieWriteConfig config) {
>     this.config = config;
>   }
>   public abstract P fetchRecordLocation(HoodieWriteInput<I> inputs, final 
> HoodieEngineContext context, HoodieTable<T, I, K, O, P> hoodieTable);
>   public abstract HoodieWriteInput<I> tagLocation(HoodieWriteInput<I> inputs, 
> HoodieEngineContext context, HoodieTable<T, I, K, O, P> table);
>   public abstract HoodieWriteOutput<O> updateLocation(HoodieWriteOutput<O> 
> inputs, HoodieEngineContext context, HoodieTable<T, I, K, O, P> table);
> ...
> }{code}
>  



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

Reply via email to