Yue Zhang created HUDI-2144: ------------------------------- Summary: Offline clustering(independent sparkJob) will cause insert action losing data Key: HUDI-2144 URL: https://issues.apache.org/jira/browse/HUDI-2144 Project: Apache Hudi Issue Type: Bug Reporter: Yue Zhang Attachments: image-2021-07-08-13-52-00-089.png
For now we have two kinds of pipeline for Hudi using spark: # Streaming insert data to specific partition # Offline clustering spark job(`org.apache.hudi.utilities.HoodieClusteringJob`) to optimize file size pipeline 1 created But here is a bug we met that will lose data These steps can make the problem reproduce stably : # Submit a spark job to Ingest data1 using insert mode. # Schedule a clustering plan using `org.apache.hudi.utilities.HoodieClusteringJob` # Submit a spark job again to Ingest data2 using insert mode(Ensure that there is new file slice created in the same file group which means small file tuning for insert is working). Suppose this file group is called A and new file slice is called a. # Execute that clustering job step2 planed. # Query data1+data2 you will find new data for a is lost compared with common ingestion without clustering !image-2021-07-08-13-52-00-089.png! Here is the root cause: When ingest data using insert mode, Hudi will find small files and try to append new data to them ,aiming to tuning data file size. [https://github.com/apache/hudi/blob/650c4455c600b0346fed8b5b6aa4cc0bf3452e8c/hudi-client/hudi-spark-client/src/main/java/org/apache/hudi/table/action/commit/UpsertPartitioner.java#L149] is try to filter Small Files In Clustering but only works when user set `hoodie.clustering.inline` true which is not good enough when users using offline clustering. I just raise a PR try to fix it and tested. -- This message was sent by Atlassian Jira (v8.3.4#803005)