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

Alexey Kudinkin updated HUDI-3081:
----------------------------------
    Description: 
Currently, our Read-path infrastructure is mostly disparate for each individual 
Query Engine having the same flow replicated multiple times: 
 * Hive leverages hierarchy based off `InputFormat` class
 * Spark leverages hierarchy based off `SnapshotRelation`

This leads to substantial duplication of virtually the same flows being 
replicated multiple times and unfortunately now diverging due to out of sync 
lifecycle (bug-fixes, etc).
h3. Proposal

 
*Phase 1: Abstracting Common Functionality*
 
{_}T-shirt{_}: 1-1.5 weeks
{_}Goal{_}: Abstract following common items to avoid duplication of the complex 
sequences across Engines
  * Unify Hive’s RecordReaders (`RealtimeCompactedRecordReader`, 
{{{}RealtimeUnmergedRecordReader{}}})
 * 
 ** _These Readers should only differ in the way they handle the payload, 
everything else should remain constant_
 * Abstract w/in common component (name TBD)
 ** Listing current file-slices at the requested instant (handling the timeline)
 ** Creating Record Iterator for the provided file-slice

 

REF

[https://app.clickup.com/18029943/v/dc/h67bq-1900/h67bq-6680]

  was:
Currently, our Read-path infrastructure is mostly disparate for each individual 
Query Engine having the same flow replicated multiple times: 
 * Hive leverages hierarchy based off `InputFormat` class
 * Spark leverages hierarchy based off `SnapshotRelation`

This leads to substantial duplication of virtually the same flows being 
replicated multiple times and unfortunately now diverging due to out of sync 
lifecycle (bug-fixes, etc).
h3. Proposal
 
*Phase 1: Abstracting Common Functionality*
 
{_}T-shirt{_}: 1-1.5 weeks
{_}Goal{_}: Abstract following common items to avoid duplication of the complex 
sequences across Engines
  * Unify Hive’s RecordReaders (`RealtimeCompactedRecordReader`, 
{{{}RealtimeUnmergedRecordReader{}}})
 ** _These Readers should only differ in the way they handle the payload, 
everything else should remain constant_
 * Abstract w/in common component (name TBD)
 ** Listing current file-slices at the requested instant (handling the timeline)
 ** Creating Record Iterator for the provided file-slice

 
*Phase 2: Revisiting Record Handling*
 
{_}T-shirt{_}: 1-1.5 weeks
{_}Goal{_}: Avoid tight coupling with particular record representation on the 
Read Path (currently Avro) and enable
  * Common record handling API for combining records (Merge API)
 * Avoiding unnecessary serde by abstracting away standardized Record access 
routines (getting key, merging, etc)
 ** Behind the interface we'd rely on engine-specific representation to carry 
the payload (`InternalRow` for Spark, `ArrayWritable` for Hive, etc)


> Revisiting Read Path Infra across Query Engines
> -----------------------------------------------
>
>                 Key: HUDI-3081
>                 URL: https://issues.apache.org/jira/browse/HUDI-3081
>             Project: Apache Hudi
>          Issue Type: Epic
>            Reporter: Alexey Kudinkin
>            Assignee: Alexey Kudinkin
>            Priority: Blocker
>
> Currently, our Read-path infrastructure is mostly disparate for each 
> individual Query Engine having the same flow replicated multiple times: 
>  * Hive leverages hierarchy based off `InputFormat` class
>  * Spark leverages hierarchy based off `SnapshotRelation`
> This leads to substantial duplication of virtually the same flows being 
> replicated multiple times and unfortunately now diverging due to out of sync 
> lifecycle (bug-fixes, etc).
> h3. Proposal
>  
> *Phase 1: Abstracting Common Functionality*
>  
> {_}T-shirt{_}: 1-1.5 weeks
> {_}Goal{_}: Abstract following common items to avoid duplication of the 
> complex sequences across Engines
>   * Unify Hive’s RecordReaders (`RealtimeCompactedRecordReader`, 
> {{{}RealtimeUnmergedRecordReader{}}})
>  * 
>  ** _These Readers should only differ in the way they handle the payload, 
> everything else should remain constant_
>  * Abstract w/in common component (name TBD)
>  ** Listing current file-slices at the requested instant (handling the 
> timeline)
>  ** Creating Record Iterator for the provided file-slice
>  
> REF
> [https://app.clickup.com/18029943/v/dc/h67bq-1900/h67bq-6680]



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

Reply via email to