This is an automated email from the ASF dual-hosted git repository.

xushiyan pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/hudi.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 95aae280462 [DOCS][MINOR] Docs clarification around read and write 
indexes (#10658)
95aae280462 is described below

commit 95aae2804626864b6e742ad62838f23e7c788bb6
Author: nadine farah <[email protected]>
AuthorDate: Mon Feb 26 21:32:28 2024 -0800

    [DOCS][MINOR] Docs clarification around read and write indexes (#10658)
---
 website/docs/indexing.md | 31 +++++++++++--------------------
 1 file changed, 11 insertions(+), 20 deletions(-)

diff --git a/website/docs/indexing.md b/website/docs/indexing.md
index 034246ad580..e20d18d26fe 100644
--- a/website/docs/indexing.md
+++ b/website/docs/indexing.md
@@ -27,27 +27,18 @@ could end up having to merge all the base files against all 
incoming updates/del
 Currently, Hudi supports the following index types. Default is SIMPLE on Spark 
engine, and INMEMORY on Flink and Java 
 engines.
 
-- **BLOOM:** Employs bloom filters built out of the record keys, optionally 
also pruning candidate files using 
-  record key ranges.Key uniqueness is enforced inside partitions.
-- **GLOBAL_BLOOM:** Employs bloom filters built out of the record keys, 
optionally also pruning candidate files using 
-  record key ranges. Key uniqueness is enforced across all partitions in the 
table.
-- **SIMPLE (default for Spark engines):** Default index type for spark engine. 
Performs a lean join of the incoming records against keys extracted from the 
table on 
-  storage. Key uniqueness is enforced inside partitions. 
-- **GLOBAL_SIMPLE:** Performs a lean join of the incoming records against keys 
extracted from the table on
-  storage. Key uniqueness is enforced across all partitions in the table.
-- **HBASE:** Manages the index mapping in an external Apache HBase table.
+- **BLOOM:** Uses bloom filters generated from record keys, with the option to 
further narrow down candidate files based on the ranges of the record keys. It 
requires keys to be partition-level unique so it can function correctly.
+- **GLOBAL_BLOOM:** Utilizes bloom filters created from record keys, and may 
also refine the selection of candidate files by using the ranges of record 
keys. It requires keys to be table/global-level unique so it can function 
correctly.
+- **SIMPLE (default for Spark engines):** This is the standard index type for 
the Spark engine. It executes an efficient join of incoming records with keys 
retrieved from the table stored on disk. It requires keys to be partition-level 
unique so it can function correctly. 
+- **GLOBAL_SIMPLE:** Performs a lean join of the incoming records against keys 
extracted from the table on storage. It requires keys to be table/global-level 
unique so it can function correctly.
+- **HBASE:** Mangages the index mapping through an external table in Apache 
HBase.
 - **INMEMORY (default for Flink and Java):** Uses in-memory hashmap in Spark 
and Java engine and Flink in-memory state in Flink for indexing.
-- **BUCKET:** Employs bucket hashing to locates the file group containing the 
records. Particularly beneficial in 
-  large scale. Use `hoodie.index.bucket.engine` to choose bucket engine type, 
i.e., how buckets are generated;
-  - `SIMPLE(default)`: Uses a fixed number of buckets for file groups per 
partition which cannot shrink or expand. This works for both COW and 
-     MOR tables. Since the num of buckets cannot be changed and design of 
one-on-one mapping between buckets and file groups, 
-     this index might not suit well for highly skewed partitions. 
-  - `CONSISTENT_HASHING`: Supports dynamic number of buckets with bucket 
resizing to properly size each bucket. This 
-     solves potential data skew problem where partitions with high volume of 
data can be dynamically resized to have 
-     multiple buckets that are reasonably sized in contrast to the fixed 
number of buckets per partition in SIMPLE 
-     bucket engine type. This only works with MOR tables.
-- **RECORD_INDEX:** Index which saves the record key to location mappings in 
the HUDI Metadata Table. Record index is a 
-  global index, enforcing key uniqueness across all partitions in the table. 
Supports sharding to achieve very high scale.
+- **BUCKET:** Utilizes bucket hashing to identify the file group that houses 
the records, which proves to be particularly advantageous on a large scale. To 
select the type of bucket engine—that is, the method by which buckets are 
created—use the `hoodie.index.bucket.engine` configuration option.
+  - `SIMPLE(default)`: This index employs a fixed number of buckets for file 
groups within each partition, which do not have the capacity to decrease or 
increase in size. It is applicable to both COW and MOR tables. Due to the 
unchangeable number of buckets and the design principle of mapping each bucket 
to a single file group, this indexing method may not be ideal for partitions 
with significant data skew.
+  - `CONSISTENT_HASHING`: This index accommodates a dynamic number of buckets, 
with the capability for bucket resizing to ensure each bucket is sized 
appropriately. This addresses the issue of data skew in partitions with a high 
volume of data by allowing these partitions to be dynamically resized. As a 
result, partitions can have multiple reasonably sized buckets, unlike the fixed 
bucket count per partition seen in the SIMPLE bucket engine type. This feature 
is exclusively compatible wi [...]
+  
+- **RECORD_INDEX:** This index saves the record key to location mappings in 
the HUDI Metadata Table. It functions as a global index, requiring keys to be 
unique across all partitions within the table. To accommodate very high scales, 
it utilizes sharding. The record index is specifically optimized to enable fast 
upserts. Additionally, when it comes to reading data, the index is crafted to 
allow for rapid point lookups, significantly speeding up data retrieval 
processes.
+
 - **Bring your own implementation:** You can extend this [public 
API](https://github.com/apache/hudi/blob/master/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/index/HoodieIndex.java)
 
 to implement custom indexing.
 

Reply via email to