fhan688 opened a new pull request, #3456:
URL: https://github.com/apache/fluss/pull/3456

   ### Purpose
   
     Linked issue: https://github.com/apache/fluss/issues/3276
   
     This PR introduces the first planner-only Hudi lake source implementation 
for Fluss.
   
     Currently, the Hudi lake storage module supports basic Hudi catalog 
integration, but
     `HudiLakeStorage#createLakeSource` does not return a usable lake source. 
As a result, Fluss cannot
     plan readable lake splits for data already stored in Hudi.
   
     This change adds Hudi source split planning based on a completed Hudi 
instant. Record reading, limit
     pushdown, and Hudi tiering writer support remain explicitly unsupported 
and can be implemented in
     follow-up PRs.
   
   ### Brief change log
   
     - Add `HudiLakeSource`, `HudiSplit`, `HudiSplitPlanner`, and 
`HudiSplitSerializer`.
     - Wire `HudiLakeStorage#createLakeSource` to return a Hudi lake source.
     - Add `HudiTableInfo` to resolve Hudi catalog table metadata, meta client, 
completed timeline,
       filesystem view, table type, partition fields, and bucket-aware metadata.
     - Plan Hudi splits from the requested snapshot instant after validating 
that the instant exists in
       the completed Hudi timeline.
     - Support split planning for:
       - COW tables through latest base files before or on the requested 
instant.
       - MOR tables through latest merged file slices before or on the 
requested instant.
     - Persist Fluss bucket and partition metadata into Hudi table properties 
for planner-side recovery.
     - Return bucket `-1` for bucket-unaware Fluss log tables.
     - Add and adjust UT coverage for:
       - Hudi lake source planner/serializer wiring.
       - Explicit unsupported limit and record reader behavior.
       - Hudi split serialization version handling.
       - Hudi split planner planning and missing instant behavior.
       - Fluss bucket and partition metadata persisted in Hudi table properties.
       - Partition value extraction from Hudi partition paths.
   
   ### Tests
   
     - `mvn -pl fluss-lake/fluss-lake-hudi -am -DskipITs -Dcheckstyle.skip=true 
-DfailIfNoTests=false -Dsurefire.failIfNoSpecifiedTests=false
     
-Dtest=HudiLakeSourceTest,HudiSplitSerializerTest,HudiTableInfoTest,HudiConversionsTest,HudiSplitPlannerTest
 test`
     - `mvn -pl fluss-lake/fluss-lake-hudi -am -DskipITs -Dcheckstyle.skip=true 
-DfailIfNoTests=false -Dsurefire.failIfNoSpecifiedTests=false test`
   
     The Hudi module test run passed with 54 tests and 0 failures.
   
   ### API and Format
   
     This PR does not change public Fluss APIs or Fluss storage format.
   
     It adds internal Hudi table properties to preserve Fluss metadata for Hudi 
source split planning:
   
     - `fluss.bucket.keys`
     - `fluss.bucket-aware`
     - `fluss.partition.keys`
   
   ### Documentation
   
     No user-facing documentation is added in this PR because this is a 
planner-only foundation. Hudi
     record reading and Hudi tiering writer support are still not exposed as 
completed user workflows.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to