[cli] paimon cli#7975
Conversation
0e5b7cc to
9239a1a
Compare
JingsongLi
left a comment
There was a problem hiding this comment.
This is a big addition (9000+ lines, new module). A few high-level thoughts:
Scope & Direction Questions:
-
Overlap with Python CLI: The PR description includes a comparison table, but the fundamental question is: do we want to maintain two standalone CLIs (Java + Python) long-term? Each new feature would need to be implemented in both. What's the intended audience segmentation?
-
Calcite dependency: Adding Apache Calcite as a SQL engine brings significant dependency weight. The fat jar will be large. Have you measured the final jar size? Calcite also has its own version compatibility concerns with different Hadoop/Hive environments.
-
Module structure: Adding a top-level
paimon-climodule to the rootpom.xmlmeans it's part of the main release artifacts. Should this be an experimental/optional module first?
Technical Concerns:
-
SQL engine completeness: Using Calcite's planner is powerful but means you need to handle Calcite's SQL dialect differences from Flink/Spark SQL. Users may expect the same SQL syntax to work across Flink SQL, Spark SQL, and this CLI. What's the compatibility story?
-
Write path: The CLI includes a
WriteCommand— what's the commit protocol? Does it use the sameFileStoreCommitas Flink/Spark? How are conflicts handled for concurrent writers? -
No PIP reference: A new module of this scope typically goes through a PIP (Paimon Improvement Proposal) for community discussion. Has this been discussed on the mailing list?
I'd suggest:
- Start with a PIP discussion to align on scope and long-term maintenance plan
- Consider starting as a separate repository or
paimon-extrasmodule to avoid blocking releases - Focus the first version on read-only operations (SQL queries, catalog inspection) before adding write support
cc @apache/paimon-committers for broader input on whether we want a Java CLI in the main repo.
Purpose
paimon-cli) for Apache Paimon, providing a native command-line tool that works without Flink/Sparkpaimoncommand with fat jar packagingComparison with Python CLI
Tests
mvn clean test -pl paimon-cli)paimon sqlagainst local filesystem warehouse