Prev Next

AI / Apache Paimon Interview questions

How do you troubleshoot duplicate rows appearing when using Dynamic Bucket mode with multiple concurrent write jobs?

Dynamic Bucket mode relies on an internal index mapping each primary key to the bucket it belongs in, so that all records for a given key are routed consistently to the same bucket regardless of when they arrive. That guarantee assumes a single logical writer path is responsible for assigning and honoring that index for a given key range.

  1. Check for multiple independent write jobs. Running more than one separate streaming/batch job writing into the same Dynamic Bucket table concurrently is the most common root cause — each job can end up making independent bucket-assignment decisions for the same key, leading to the same key landing in two different buckets and surviving as two "different" rows after merge.
  2. Consolidate into a single writer path. Route all upserts for a table through one job (or one coordinated set of tasks that share the bucket-assignment index) rather than multiple independent jobs targeting the same table.
  3. Verify checkpointing/restart behavior. A job that restarted without properly resuming from its last consistent checkpoint can also reprocess records in a way that confuses bucket assignment; confirm checkpoint recovery is configured correctly.
  4. Consider Fixed Bucket if writer topology can't be consolidated. Fixed Bucket's hash-based assignment doesn't depend on a shared runtime index, so it tolerates multiple independent writers more predictably, at the cost of losing Dynamic Bucket's automatic scaling.
  5. Inspect $files and $snapshots. Look at which buckets and snapshots introduced the duplicate key to confirm which writer path caused it, before deciding whether to consolidate jobs or switch bucket modes.
The most common root cause of duplicate rows under Dynamic Bucket mode is:
If writer topology genuinely can't be consolidated into one job, a more tolerant alternative is:

More Related questions...

What is Apache Paimon? What is the purpose of Paimon's Catalog abstraction? What are the four types of metastores Paimon catalogs support? Define a primary key table in Paimon? What are the two main table types in Paimon? Describe a Paimon Snapshot? What are Manifest files used for in Paimon? What is a Bucket in Paimon? List the merge engines Paimon supports for primary key tables? What is the default merge engine in Paimon? What is the purpose of the changelog-producer table property? How do you use the sequence.field option in Paimon? What is Paimon's LSM tree used for? What are Sorted Runs in a Paimon LSM tree? Describe what Paimon's system tables are for? How do you use the $snapshots system table? What is the purpose of Tags in Paimon? What is an Append Table in Paimon? How do you apply schema evolution during CDC ingestion into Paimon? What are the consistency guarantees Paimon provides for writers? What is the purpose of the Audit Log system table? Describe the Read-optimized (ro) system table? Why does Paimon combine a lake format with an LSM-tree structure? How does the Deduplicate merge engine handle a DELETE record? What is the difference between the Partial Update and Aggregation merge engines? What is the difference between Fixed Bucket and Dynamic Bucket modes? When should you choose Postpone Bucket mode? What happens when Paimon's sorted runs contain overlapping primary key ranges? Why should changelog-producer be enabled only when necessary? What is the difference between the input and lookup changelog producers? How does the full-compaction changelog producer differ from lookup? Why do concurrent writers to the same partition only get snapshot isolation instead of full isolation? When should you choose the Hive catalog over the filesystem catalog? How can you optimize primary key lookups using the bucket-key option? What is the difference between the sequence.field and rowkind.field options? Explain the execution flow of a two-phase commit when a Paimon writer flushes data? Why is Cross Partitions Upsert more expensive than a normal bucketed upsert? How do you troubleshoot excessive small files from streaming writes into a Paimon table? What is the difference between the audit_log and binlog system tables? Explain the internal working of automatic tag creation with a watermark? When should you choose the REST catalog over the Hive catalog? What happens when you roll back a Paimon table to an earlier tag? How does Paimon achieve streaming-batch unification on the same table? Why does Paimon recommend keeping bucket data size between 200MB and 1GB? What is the difference between the First Row and Deduplicate merge engines? How can you optimize query performance using the read-optimized system table? What is the difference between Paimon's and Apache Iceberg's core design philosophy? Why did Apache Paimon originally start as part of the Flink project, and what is it called now? Which is better and why: lookup or full-compaction changelog producer for a 30-minute-latency pipeline? How do you troubleshoot duplicate rows appearing when using Dynamic Bucket mode with multiple concurrent write jobs?
Show more question and Answers...


Comments & Discussions