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

corgy pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/seatunnel.git


The following commit(s) were added to refs/heads/dev by this push:
     new af6e262b19 [Improve][Connector-V2][Hive] Deduplicate Hive option 
definitions (#10251)
af6e262b19 is described below

commit af6e262b191887886aadbfc341b18fb6f5384d9c
Author: yzeng1618 <[email protected]>
AuthorDate: Mon Jan 5 14:28:04 2026 +0800

    [Improve][Connector-V2][Hive] Deduplicate Hive option definitions (#10251)
---
 .../seatunnel/hive/config/HiveConfig.java          |  9 +++++++
 .../seatunnel/hive/config/HiveOptions.java         | 28 ++++------------------
 .../seatunnel/hive/sink/HiveSaveModeHandler.java   |  4 ++--
 .../connectors/seatunnel/hive/sink/HiveSink.java   |  5 ++--
 .../seatunnel/hive/sink/HiveSinkOptions.java       |  7 ++----
 .../seatunnel/hive/utils/HiveMetaStoreCatalog.java |  3 +--
 .../seatunnel/hive/utils/HiveTableUtils.java       |  4 ++--
 7 files changed, 24 insertions(+), 36 deletions(-)

diff --git 
a/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/config/HiveConfig.java
 
b/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/config/HiveConfig.java
index 714be58619..e2a90903b4 100644
--- 
a/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/config/HiveConfig.java
+++ 
b/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/config/HiveConfig.java
@@ -23,12 +23,21 @@ import org.apache.seatunnel.api.configuration.Options;
 import java.util.HashMap;
 import java.util.Map;
 
+/** Hive connector options (single source of truth). */
 public class HiveConfig {
     public static final Option<String> TABLE_NAME =
             Options.key("table_name")
                     .stringType()
                     .noDefaultValue()
                     .withDescription("Hive table name");
+
+    public static final Option<Boolean> USE_REGEX =
+            Options.key("use_regex")
+                    .booleanType()
+                    .defaultValue(false)
+                    .withDescription(
+                            "Use regular expression for `table_name` matching. 
"
+                                    + "When set to true, the `table_name` will 
be treated as a regex pattern and can match multiple tables.");
     public static final Option<String> METASTORE_URI =
             Options.key("metastore_uri")
                     .stringType()
diff --git 
a/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/config/HiveOptions.java
 
b/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/config/HiveOptions.java
index 66027da7a6..744824f7d7 100644
--- 
a/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/config/HiveOptions.java
+++ 
b/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/config/HiveOptions.java
@@ -18,34 +18,16 @@
 package org.apache.seatunnel.connectors.seatunnel.hive.config;
 
 import org.apache.seatunnel.api.configuration.Option;
-import org.apache.seatunnel.api.configuration.Options;
 import 
org.apache.seatunnel.connectors.seatunnel.file.config.FileBaseSourceOptions;
 
+/** Compatibility layer for Hive options and inherited file source options. */
 public class HiveOptions extends FileBaseSourceOptions {
 
-    public static final Option<String> TABLE_NAME =
-            Options.key("table_name")
-                    .stringType()
-                    .noDefaultValue()
-                    .withDescription("Hive table name");
+    public static final Option<String> TABLE_NAME = HiveConfig.TABLE_NAME;
 
-    public static final Option<Boolean> USE_REGEX =
-            Options.key("use_regex")
-                    .booleanType()
-                    .defaultValue(false)
-                    .withDescription(
-                            "Use regular expression for `table_name` matching. 
"
-                                    + "When set to true, the `table_name` will 
be treated as a regex pattern and can match multiple tables.");
+    public static final Option<String> METASTORE_URI = 
HiveConfig.METASTORE_URI;
 
-    public static final Option<String> METASTORE_URI =
-            Options.key("metastore_uri")
-                    .stringType()
-                    .noDefaultValue()
-                    .withDescription("Hive metastore uri");
+    public static final Option<Boolean> USE_REGEX = HiveConfig.USE_REGEX;
 
-    public static final Option<String> HIVE_SITE_PATH =
-            Options.key("hive_site_path")
-                    .stringType()
-                    .noDefaultValue()
-                    .withDescription("The path of hive-site.xml");
+    public static final Option<String> HIVE_SITE_PATH = 
HiveConfig.HIVE_SITE_PATH;
 }
diff --git 
a/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/sink/HiveSaveModeHandler.java
 
b/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/sink/HiveSaveModeHandler.java
index dc56f46c31..d95540809c 100644
--- 
a/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/sink/HiveSaveModeHandler.java
+++ 
b/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/sink/HiveSaveModeHandler.java
@@ -25,7 +25,7 @@ import org.apache.seatunnel.api.table.catalog.Catalog;
 import org.apache.seatunnel.api.table.catalog.CatalogTable;
 import org.apache.seatunnel.api.table.catalog.TablePath;
 import org.apache.seatunnel.api.table.catalog.TableSchema;
-import org.apache.seatunnel.connectors.seatunnel.hive.config.HiveOptions;
+import org.apache.seatunnel.connectors.seatunnel.hive.config.HiveConfig;
 import 
org.apache.seatunnel.connectors.seatunnel.hive.exception.HiveConnectorErrorCode;
 import 
org.apache.seatunnel.connectors.seatunnel.hive.exception.HiveConnectorException;
 import 
org.apache.seatunnel.connectors.seatunnel.hive.utils.HiveMetaStoreCatalog;
@@ -62,7 +62,7 @@ public class HiveSaveModeHandler implements SaveModeHandler, 
AutoCloseable {
         this.readonlyConfig = readonlyConfig;
         this.catalogTable = catalogTable;
         this.schemaSaveMode = schemaSaveMode;
-        this.tablePath = 
TablePath.of(readonlyConfig.get(HiveOptions.TABLE_NAME));
+        this.tablePath = 
TablePath.of(readonlyConfig.get(HiveConfig.TABLE_NAME));
         this.dbName = tablePath.getDatabaseName();
         this.tableName = tablePath.getTableName();
         this.tableSchema = catalogTable.getTableSchema();
diff --git 
a/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/sink/HiveSink.java
 
b/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/sink/HiveSink.java
index d3dccee936..d693e98c9b 100644
--- 
a/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/sink/HiveSink.java
+++ 
b/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/sink/HiveSink.java
@@ -43,6 +43,7 @@ import 
org.apache.seatunnel.connectors.seatunnel.file.sink.state.FileSinkState;
 import 
org.apache.seatunnel.connectors.seatunnel.file.sink.writer.WriteStrategy;
 import 
org.apache.seatunnel.connectors.seatunnel.file.sink.writer.WriteStrategyFactory;
 import 
org.apache.seatunnel.connectors.seatunnel.hive.commit.HiveSinkAggregatedCommitter;
+import org.apache.seatunnel.connectors.seatunnel.hive.config.HiveConfig;
 import org.apache.seatunnel.connectors.seatunnel.hive.config.HiveConstants;
 import org.apache.seatunnel.connectors.seatunnel.hive.config.HiveOptions;
 import 
org.apache.seatunnel.connectors.seatunnel.hive.exception.HiveConnectorException;
@@ -237,7 +238,7 @@ public class HiveSink
             tableName = getTableInformation().getTableName();
         } else {
             // Derive from config to ensure non-null values during commit
-            String table = readonlyConfig.get(HiveOptions.TABLE_NAME);
+            String table = readonlyConfig.get(HiveConfig.TABLE_NAME);
             org.apache.seatunnel.api.table.catalog.TablePath path =
                     org.apache.seatunnel.api.table.catalog.TablePath.of(table);
             dbName = path.getDatabaseName();
@@ -310,7 +311,7 @@ public class HiveSink
     // Try to read from configuration, qualify default location via 
HiveLocationUtils
     private String getDefaultTableLocation(ReadonlyConfig config) {
         try {
-            String table = config.get(HiveOptions.TABLE_NAME);
+            String table = config.get(HiveConfig.TABLE_NAME);
             org.apache.seatunnel.api.table.catalog.TablePath path =
                     org.apache.seatunnel.api.table.catalog.TablePath.of(table);
             return 
org.apache.seatunnel.connectors.seatunnel.hive.utils.HiveLocationUtils
diff --git 
a/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/sink/HiveSinkOptions.java
 
b/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/sink/HiveSinkOptions.java
index 9d7b81fac5..e6bad0e3fa 100644
--- 
a/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/sink/HiveSinkOptions.java
+++ 
b/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/sink/HiveSinkOptions.java
@@ -21,16 +21,13 @@ import org.apache.seatunnel.api.configuration.Option;
 import org.apache.seatunnel.api.configuration.Options;
 import org.apache.seatunnel.api.sink.DataSaveMode;
 import org.apache.seatunnel.api.sink.SchemaSaveMode;
+import org.apache.seatunnel.connectors.seatunnel.hive.config.HiveConfig;
 import org.apache.seatunnel.connectors.seatunnel.hive.config.HiveOptions;
 
 public class HiveSinkOptions extends HiveOptions {
 
     public static final Option<Boolean> ABORT_DROP_PARTITION_METADATA =
-            Options.key("abort_drop_partition_metadata")
-                    .booleanType()
-                    .defaultValue(false)
-                    .withDescription(
-                            "Flag to decide whether to drop partition metadata 
from Hive Metastore during an abort operation. Note: this only affects the 
metadata in the metastore, the data in the partition will always be 
deleted(data generated during the synchronization process).");
+            HiveConfig.ABORT_DROP_PARTITION_METADATA;
 
     public static final Option<Boolean> OVERWRITE =
             Options.key("overwrite")
diff --git 
a/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/utils/HiveMetaStoreCatalog.java
 
b/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/utils/HiveMetaStoreCatalog.java
index 2d6778eca7..ab3cf36369 100644
--- 
a/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/utils/HiveMetaStoreCatalog.java
+++ 
b/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/utils/HiveMetaStoreCatalog.java
@@ -31,7 +31,6 @@ import 
org.apache.seatunnel.api.table.catalog.exception.TableNotExistException;
 import 
org.apache.seatunnel.connectors.seatunnel.file.hadoop.HadoopLoginFactory;
 import 
org.apache.seatunnel.connectors.seatunnel.file.hdfs.source.config.HdfsSourceConfigOptions;
 import org.apache.seatunnel.connectors.seatunnel.hive.config.HiveConfig;
-import org.apache.seatunnel.connectors.seatunnel.hive.config.HiveOptions;
 import 
org.apache.seatunnel.connectors.seatunnel.hive.exception.HiveConnectorErrorCode;
 import 
org.apache.seatunnel.connectors.seatunnel.hive.exception.HiveConnectorException;
 
@@ -87,7 +86,7 @@ public class HiveMetaStoreCatalog implements Catalog, 
Closeable, Serializable {
     private transient UserGroupInformation userGroupInformation;
 
     public HiveMetaStoreCatalog(ReadonlyConfig config) {
-        this.metastoreUri = config.get(HiveOptions.METASTORE_URI);
+        this.metastoreUri = config.get(HiveConfig.METASTORE_URI);
         this.hadoopConfDir = config.get(HiveConfig.HADOOP_CONF_PATH);
         this.hiveSitePath = config.get(HiveConfig.HIVE_SITE_PATH);
         this.kerberosEnabled = HiveMetaStoreProxyUtils.enableKerberos(config);
diff --git 
a/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/utils/HiveTableUtils.java
 
b/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/utils/HiveTableUtils.java
index b47fa06678..5544158f39 100644
--- 
a/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/utils/HiveTableUtils.java
+++ 
b/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/utils/HiveTableUtils.java
@@ -22,8 +22,8 @@ import org.apache.seatunnel.api.table.catalog.TablePath;
 import org.apache.seatunnel.common.exception.CommonErrorCodeDeprecated;
 import org.apache.seatunnel.common.exception.SeaTunnelRuntimeException;
 import org.apache.seatunnel.connectors.seatunnel.file.config.FileFormat;
+import org.apache.seatunnel.connectors.seatunnel.hive.config.HiveConfig;
 import org.apache.seatunnel.connectors.seatunnel.hive.config.HiveConstants;
-import org.apache.seatunnel.connectors.seatunnel.hive.config.HiveOptions;
 import 
org.apache.seatunnel.connectors.seatunnel.hive.exception.HiveConnectorErrorCode;
 import 
org.apache.seatunnel.connectors.seatunnel.hive.exception.HiveConnectorException;
 
@@ -32,7 +32,7 @@ import org.apache.hadoop.hive.metastore.api.Table;
 public class HiveTableUtils {
 
     public static Table getTableInfo(ReadonlyConfig readonlyConfig) {
-        String table = readonlyConfig.get(HiveOptions.TABLE_NAME);
+        String table = readonlyConfig.get(HiveConfig.TABLE_NAME);
         TablePath tablePath = TablePath.of(table);
         if (tablePath.getDatabaseName() == null || tablePath.getTableName() == 
null) {
             throw new SeaTunnelRuntimeException(

Reply via email to