apache / apache/hudi

DynamoDB based external index implementation

Open
#14,822 0 comments 0 reactions 0 assignees View on GitHub
area:index from-jira priority:high type:feature
Dominant language
Java
Stars
6.2k
Forks
2.5k
Avg merge
2d 8h
Merged PRs (30d)
111

Description

We have a HBaseIndex, that provides uses with ability to store fileID <=> recordKey mappings in an external kv store, for fast lookups during upsert operations. We can potentially create a similar one for DynamoDB.

We just use a single column family in HBase, so we should be able to largely re-use the code/key-value schema across them even.

## JIRA info

- Link: https://issues.apache.org/jira/browse/HUDI-2199
- Type: New Feature
- Epic: https://issues.apache.org/jira/browse/HUDI-3966

---

## Comments

01/Aug/21 09:53;Biswajit11;so we will need properties for dynamodb also , like in emr we have a table name emrfs , can we have a table like that called as hudifs which gets created if the table doesn't exist ?

 Just one question does it creates a table for each table name ingested or it uses a generic table for table ingested into hudi ?

 

also can you say me the class name for hbase from where i can get an idea ?

 

 

EDIT 

 

i was just checking some hbase implementation classes in hudi 

 

i found out it stores the data in this format 

partition_path  -> is it string ?

, fileID  ---> string or number ?

 

commitTime   -> new Date().getTime();

 

 

 

As in dynamodb there is a concept of PK and SK can you let me know what would be the pk and sk for this would be and can you give an example of data that gets stored here ?

 

 ;;;

---

04/Aug/21 05:19;vinoth;> it creates a table for each table name ingested or it uses a generic table for table ingested into hudi ?

IMO, having separate tables is better for manageability. 

 

[https://github.com/apache/hudi/blob/master/hudi-client/hudi-spark-client/src/main/java/org/apache/hudi/index/hbase/SparkHoodieHBaseIndex.java] 

here you go!;;;

---

03/Oct/21 06:36;Biswajit11;Thanks , was on a vacation will start working on this ;;;

---

24/Dec/21 01:43;Biswajit11;Insert and upsert is completed and testing is in progress , rollback is still left 

As dynamodb only can efficiently search using hash key and sort key and both of them are already used by hudi primary key and partition key so using commit_ts one gsi index needs to be created for efficent rollback ;;;

---

20/Sep/22 19:21;tgraciadio;Hi
Do we have any updates on this feature?;;;

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the HBaseIndex implementation, especially hudi-client/hudi-spark-client/src/main/java/org/apache/hudi/index/hbase/SparkHoodieHBaseIndex.java, and compare its external key-value schema and lookup flow. Define the DynamoDB table and key design for upsert and rollback, then verify that the implementation and its tests cover both operations.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws, java
Domain
databases
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.