vinothchandar commented on code in PR #12998:
URL: https://github.com/apache/hudi/pull/12998#discussion_r2006634286


##########
rfc/rfc-92/rfc-92.md:
##########
@@ -0,0 +1,102 @@
+
+# RFC-92: Pluggable Table Formats in Hudi
+
+## Proposers
+
+*   Balaji Varadarajan
+
+## Approvers
+
+*   Vinoth Chandar
+*   Ethan Guo
+
+## Status
+
+JIRA: <TBD>
+
+## Abstract
+
+This RFC proposes support for different backing table format implementations 
inside Hudi. For the past 4 years at-least, we have been consistently defining 
Hudi as a broader platform and software 
[stack](https://hudi.apache.org/docs/hudi_stack) that delivers much of these 
benefits. Hudi's table format makes choices specific to data lake workloads, 
allowing efficient read/write (even the recent 
[blog](https://bytearray.substack.com/p/computer-science-behind-lakehouse) from 
Vinoth), has major differences and advantages compared to other approaches. The 
community plans to centrally focus on the native Hudi storage format.
+
+However, there may be benefits to allowing other storage layouts/table formats 
to fit under Hudi's higher level functionality. This also has non-technical 
benefits of insulating the project from vendor marketing wars. Most 
contributors (such as myself) are happily part of the global Hudi open-source 
community, for the sake of just building technology.

Review Comment:
   I am trying to understand this argument more. Speaking for myself, I am also 
here for building technology. :)



##########
rfc/rfc-92/rfc-92.md:
##########
@@ -0,0 +1,102 @@
+
+# RFC-92: Pluggable Table Formats in Hudi
+
+## Proposers
+
+*   Balaji Varadarajan
+
+## Approvers
+
+*   Vinoth Chandar
+*   Ethan Guo
+
+## Status
+
+JIRA: <TBD>
+
+## Abstract
+
+This RFC proposes support for different backing table format implementations 
inside Hudi. For the past 4 years at-least, we have been consistently defining 
Hudi as a broader platform and software 
[stack](https://hudi.apache.org/docs/hudi_stack) that delivers much of these 
benefits. Hudi's table format makes choices specific to data lake workloads, 
allowing efficient read/write (even the recent 
[blog](https://bytearray.substack.com/p/computer-science-behind-lakehouse) from 
Vinoth), has major differences and advantages compared to other approaches. The 
community plans to centrally focus on the native Hudi storage format.
+
+However, there may be benefits to allowing other storage layouts/table formats 
to fit under Hudi's higher level functionality. This also has non-technical 
benefits of insulating the project from vendor marketing wars. Most 
contributors (such as myself) are happily part of the global Hudi open-source 
community, for the sake of just building technology.
+
+## Background
+
+Expanding further, there are plenty of valid technical reasons on why Hudi 
should allow different storage layouts, under the upper layer reader/writer and 
table services implementations.
+
+1. We have use-cases, for cloud-native/high performance implementations of 
timeline (\`HoodieTimeline\`) and metadata (\`HoodieMetadata\` interface). In 
our use-case, we would like to explore backing them using NoSQL datastore like 
DynamoDB, for ultra-low latency queries.

Review Comment:
   this is a valid technical reason. Something I was/am hoping the 
metaserver/timeline server standalone solves. But seems like you want to just 
not run another server.. and instead plug in cloud native services?



##########
rfc/rfc-92/rfc-92.md:
##########
@@ -0,0 +1,102 @@
+
+# RFC-92: Pluggable Table Formats in Hudi
+
+## Proposers
+
+*   Balaji Varadarajan
+
+## Approvers
+
+*   Vinoth Chandar
+*   Ethan Guo
+
+## Status
+
+JIRA: <TBD>
+
+## Abstract
+
+This RFC proposes support for different backing table format implementations 
inside Hudi. For the past 4 years at-least, we have been consistently defining 
Hudi as a broader platform and software 
[stack](https://hudi.apache.org/docs/hudi_stack) that delivers much of these 
benefits. Hudi's table format makes choices specific to data lake workloads, 
allowing efficient read/write (even the recent 
[blog](https://bytearray.substack.com/p/computer-science-behind-lakehouse) from 
Vinoth), has major differences and advantages compared to other approaches. The 
community plans to centrally focus on the native Hudi storage format.
+
+However, there may be benefits to allowing other storage layouts/table formats 
to fit under Hudi's higher level functionality. This also has non-technical 
benefits of insulating the project from vendor marketing wars. Most 
contributors (such as myself) are happily part of the global Hudi open-source 
community, for the sake of just building technology.
+
+## Background
+
+Expanding further, there are plenty of valid technical reasons on why Hudi 
should allow different storage layouts, under the upper layer reader/writer and 
table services implementations.
+
+1. We have use-cases, for cloud-native/high performance implementations of 
timeline (\`HoodieTimeline\`) and metadata (\`HoodieMetadata\` interface). In 
our use-case, we would like to explore backing them using NoSQL datastore like 
DynamoDB, for ultra-low latency queries.
+2. Hudi already supports 
[different](https://github.com/apache/hudi/blob/master/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/table/storage/HoodieStorageLayout.java)
 storage formats/layouts. Tables can be bucketed, consistent hashed or 
organized by having data laid out in order of arrival (default).
+3. Hudi already allows plug-ability and customization at various layers like 
record merger, indexes and other core write/read paths.
+4. It's very standard practice in databases to allow multiple storage backends 
(MySQL supports myISAM, innodb/btree, myrocks/lsm). This may be crucial step 
towards the database northstar vision.
+5. As a long time member of the Hudi community and open-source enthusiast, I 
think supporting other table formats, even existing ones like Apache Iceberg or 
Delta Lake, benefits those communities as well.
+    1. For e.g. the Hudi Streamer tool being used at our data lake (and 
hundreds more) for ingestion/incremental ETL can also benefit other communities.
+    2. Hudi provides out-of-box automatic table management that is manual in 
projects like Iceberg. With such an implementation, common data lake services 
can be reused across formats.
+    3. Hudi's high performance writer path can be extended to other formats 
(to the extent possible, that is not dependent on features like indexing that 
is only in Hudi's native format)
+    4. there are more such services and functionalities to be unlocked.
+
+
+Some non-technical reasons:
+1. Though Hudi is clearly defined as a platform over the years, there is so 
much vendor attention in the space for the past couple years, where Hudi is 
minimized to a table format and compared. This change will help highlight the 
value of Hudi's open software services, beyond just open formats.
+2. It may be controversial to say this. But, the project has been facing a lot 
of vendor FUD due to different vendors supporting different table formats. It 
is neither in the interest nor the business of the project community to be part 
of vendor wars. Opening up the table format layer to different implementations 
avoids these distractions for regular OSS contributors with no vendor 
interests, and helps focus on open-source software design and development.

Review Comment:
   First of all. Thanks for airing this so openly. 
   
   Yes. the project has been facing FUD and its been distracting.. 
   
   At-least IMO, the change and spirit of supporting OSS communities needs to 
come from the big leaders/vendors in the market. Idk if a RFC can change that.. 
   



##########
rfc/rfc-92/rfc-92.md:
##########
@@ -0,0 +1,102 @@
+
+# RFC-92: Pluggable Table Formats in Hudi
+
+## Proposers
+
+*   Balaji Varadarajan
+
+## Approvers
+
+*   Vinoth Chandar
+*   Ethan Guo
+
+## Status
+
+JIRA: <TBD>
+
+## Abstract
+
+This RFC proposes support for different backing table format implementations 
inside Hudi. For the past 4 years at-least, we have been consistently defining 
Hudi as a broader platform and software 
[stack](https://hudi.apache.org/docs/hudi_stack) that delivers much of these 
benefits. Hudi's table format makes choices specific to data lake workloads, 
allowing efficient read/write (even the recent 
[blog](https://bytearray.substack.com/p/computer-science-behind-lakehouse) from 
Vinoth), has major differences and advantages compared to other approaches. The 
community plans to centrally focus on the native Hudi storage format.
+
+However, there may be benefits to allowing other storage layouts/table formats 
to fit under Hudi's higher level functionality. This also has non-technical 
benefits of insulating the project from vendor marketing wars. Most 
contributors (such as myself) are happily part of the global Hudi open-source 
community, for the sake of just building technology.
+
+## Background
+
+Expanding further, there are plenty of valid technical reasons on why Hudi 
should allow different storage layouts, under the upper layer reader/writer and 
table services implementations.
+
+1. We have use-cases, for cloud-native/high performance implementations of 
timeline (\`HoodieTimeline\`) and metadata (\`HoodieMetadata\` interface). In 
our use-case, we would like to explore backing them using NoSQL datastore like 
DynamoDB, for ultra-low latency queries.
+2. Hudi already supports 
[different](https://github.com/apache/hudi/blob/master/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/table/storage/HoodieStorageLayout.java)
 storage formats/layouts. Tables can be bucketed, consistent hashed or 
organized by having data laid out in order of arrival (default).
+3. Hudi already allows plug-ability and customization at various layers like 
record merger, indexes and other core write/read paths.
+4. It's very standard practice in databases to allow multiple storage backends 
(MySQL supports myISAM, innodb/btree, myrocks/lsm). This may be crucial step 
towards the database northstar vision.

Review Comment:
   Understand the comparisons. but I think those layouts can just be supported 
in native storage format itself. 



##########
rfc/rfc-92/rfc-92.md:
##########
@@ -0,0 +1,102 @@
+
+# RFC-92: Pluggable Table Formats in Hudi
+
+## Proposers
+
+*   Balaji Varadarajan
+
+## Approvers
+
+*   Vinoth Chandar
+*   Ethan Guo
+
+## Status
+
+JIRA: <TBD>
+
+## Abstract
+
+This RFC proposes support for different backing table format implementations 
inside Hudi. For the past 4 years at-least, we have been consistently defining 
Hudi as a broader platform and software 
[stack](https://hudi.apache.org/docs/hudi_stack) that delivers much of these 
benefits. Hudi's table format makes choices specific to data lake workloads, 
allowing efficient read/write (even the recent 
[blog](https://bytearray.substack.com/p/computer-science-behind-lakehouse) from 
Vinoth), has major differences and advantages compared to other approaches. The 
community plans to centrally focus on the native Hudi storage format.
+
+However, there may be benefits to allowing other storage layouts/table formats 
to fit under Hudi's higher level functionality. This also has non-technical 
benefits of insulating the project from vendor marketing wars. Most 
contributors (such as myself) are happily part of the global Hudi open-source 
community, for the sake of just building technology.
+
+## Background
+
+Expanding further, there are plenty of valid technical reasons on why Hudi 
should allow different storage layouts, under the upper layer reader/writer and 
table services implementations.
+
+1. We have use-cases, for cloud-native/high performance implementations of 
timeline (\`HoodieTimeline\`) and metadata (\`HoodieMetadata\` interface). In 
our use-case, we would like to explore backing them using NoSQL datastore like 
DynamoDB, for ultra-low latency queries.
+2. Hudi already supports 
[different](https://github.com/apache/hudi/blob/master/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/table/storage/HoodieStorageLayout.java)
 storage formats/layouts. Tables can be bucketed, consistent hashed or 
organized by having data laid out in order of arrival (default).
+3. Hudi already allows plug-ability and customization at various layers like 
record merger, indexes and other core write/read paths.
+4. It's very standard practice in databases to allow multiple storage backends 
(MySQL supports myISAM, innodb/btree, myrocks/lsm). This may be crucial step 
towards the database northstar vision.
+5. As a long time member of the Hudi community and open-source enthusiast, I 
think supporting other table formats, even existing ones like Apache Iceberg or 
Delta Lake, benefits those communities as well.
+    1. For e.g. the Hudi Streamer tool being used at our data lake (and 
hundreds more) for ingestion/incremental ETL can also benefit other communities.
+    2. Hudi provides out-of-box automatic table management that is manual in 
projects like Iceberg. With such an implementation, common data lake services 
can be reused across formats.
+    3. Hudi's high performance writer path can be extended to other formats 
(to the extent possible, that is not dependent on features like indexing that 
is only in Hudi's native format)
+    4. there are more such services and functionalities to be unlocked.
+
+
+Some non-technical reasons:
+1. Though Hudi is clearly defined as a platform over the years, there is so 
much vendor attention in the space for the past couple years, where Hudi is 
minimized to a table format and compared. This change will help highlight the 
value of Hudi's open software services, beyond just open formats.
+2. It may be controversial to say this. But, the project has been facing a lot 
of vendor FUD due to different vendors supporting different table formats. It 
is neither in the interest nor the business of the project community to be part 
of vendor wars. Opening up the table format layer to different implementations 
avoids these distractions for regular OSS contributors with no vendor 
interests, and helps focus on open-source software design and development.
+
+  
+## **Implementation**
+
+The main implementation step here is to create abstraction called 
TableFormatPlugin which handles table format operations such as 

Review Comment:
   The point @danny0405 makes has some merit. I don't know if the Hudi 
community needs to maintain any of these implementations. I think it adds 
unnecessary dev and testing overhead. Can we limit the scope to just keeping 
the interfaces in the project. for e.g plenty of users have written custom 
payload mergers, not everything needs to be checked in and maintained within 
this repo



##########
rfc/rfc-92/rfc-92.md:
##########
@@ -0,0 +1,102 @@
+
+# RFC-92: Pluggable Table Formats in Hudi
+
+## Proposers
+
+*   Balaji Varadarajan
+
+## Approvers
+
+*   Vinoth Chandar
+*   Ethan Guo
+
+## Status
+
+JIRA: <TBD>
+
+## Abstract
+
+This RFC proposes support for different backing table format implementations 
inside Hudi. For the past 4 years at-least, we have been consistently defining 
Hudi as a broader platform and software 
[stack](https://hudi.apache.org/docs/hudi_stack) that delivers much of these 
benefits. Hudi's table format makes choices specific to data lake workloads, 
allowing efficient read/write (even the recent 
[blog](https://bytearray.substack.com/p/computer-science-behind-lakehouse) from 
Vinoth), has major differences and advantages compared to other approaches. The 
community plans to centrally focus on the native Hudi storage format.
+
+However, there may be benefits to allowing other storage layouts/table formats 
to fit under Hudi's higher level functionality. This also has non-technical 
benefits of insulating the project from vendor marketing wars. Most 
contributors (such as myself) are happily part of the global Hudi open-source 
community, for the sake of just building technology.
+
+## Background
+
+Expanding further, there are plenty of valid technical reasons on why Hudi 
should allow different storage layouts, under the upper layer reader/writer and 
table services implementations.
+
+1. We have use-cases, for cloud-native/high performance implementations of 
timeline (\`HoodieTimeline\`) and metadata (\`HoodieMetadata\` interface). In 
our use-case, we would like to explore backing them using NoSQL datastore like 
DynamoDB, for ultra-low latency queries.
+2. Hudi already supports 
[different](https://github.com/apache/hudi/blob/master/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/table/storage/HoodieStorageLayout.java)
 storage formats/layouts. Tables can be bucketed, consistent hashed or 
organized by having data laid out in order of arrival (default).
+3. Hudi already allows plug-ability and customization at various layers like 
record merger, indexes and other core write/read paths.
+4. It's very standard practice in databases to allow multiple storage backends 
(MySQL supports myISAM, innodb/btree, myrocks/lsm). This may be crucial step 
towards the database northstar vision.
+5. As a long time member of the Hudi community and open-source enthusiast, I 
think supporting other table formats, even existing ones like Apache Iceberg or 
Delta Lake, benefits those communities as well.

Review Comment:
   A bunch of this can also be now unlocked by using Hudi and XTable. no?  
What's the additional benefits to hosting these implementations inside Hudi?



##########
rfc/rfc-92/rfc-92.md:
##########
@@ -0,0 +1,102 @@
+
+# RFC-92: Pluggable Table Formats in Hudi
+
+## Proposers
+
+*   Balaji Varadarajan
+
+## Approvers
+
+*   Vinoth Chandar
+*   Ethan Guo
+
+## Status
+
+JIRA: <TBD>
+
+## Abstract
+
+This RFC proposes support for different backing table format implementations 
inside Hudi. For the past 4 years at-least, we have been consistently defining 
Hudi as a broader platform and software 
[stack](https://hudi.apache.org/docs/hudi_stack) that delivers much of these 
benefits. Hudi's table format makes choices specific to data lake workloads, 
allowing efficient read/write (even the recent 
[blog](https://bytearray.substack.com/p/computer-science-behind-lakehouse) from 
Vinoth), has major differences and advantages compared to other approaches. The 
community plans to centrally focus on the native Hudi storage format.

Review Comment:
   yes . table format is a made up name for tracking metadata, circumventing 
well-established storage format tradeoffs. That's what the blog you cited was 
talking about. I don't see how deliver the features and performance without our 
native storage/table format. 
   
   Just want to state that out very clearly. 



-- 
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