diff --git a/hudi-sync/hudi-hive-sync/src/main/java/org/apache/hudi/hive/HiveSyncTool.java b/hudi-sync/hudi-hive-sync/src/main/java/org/apache/hudi/hive/HiveSyncTool.java index 88efabea8..26a213b40 100644 --- a/hudi-sync/hudi-hive-sync/src/main/java/org/apache/hudi/hive/HiveSyncTool.java +++ b/hudi-sync/hudi-hive-sync/src/main/java/org/apache/hudi/hive/HiveSyncTool.java @@ -113,20 +113,7 @@ public class HiveSyncTool extends AbstractSyncTool { public void syncHoodieTable() { try { if (hoodieHiveClient != null) { - switch (hoodieHiveClient.getTableType()) { - case COPY_ON_WRITE: - syncHoodieTable(snapshotTableName, false, false); - break; - case MERGE_ON_READ: - // sync a RO table for MOR - syncHoodieTable(roTableName.get(), false, true); - // sync a RT table for MOR - syncHoodieTable(snapshotTableName, true, false); - break; - default: - LOG.error("Unknown table type " + hoodieHiveClient.getTableType()); - throw new InvalidTableException(hoodieHiveClient.getBasePath()); - } + doSync(); } } catch (RuntimeException re) { throw new HoodieException("Got runtime exception when hive syncing " + cfg.tableName, re); @@ -136,7 +123,24 @@ public class HiveSyncTool extends AbstractSyncTool { } } } - + + protected void doSync() { + switch (hoodieHiveClient.getTableType()) { + case COPY_ON_WRITE: + syncHoodieTable(snapshotTableName, false, false); + break; + case MERGE_ON_READ: + // sync a RO table for MOR + syncHoodieTable(roTableName.get(), false, true); + // sync a RT table for MOR + syncHoodieTable(snapshotTableName, true, false); + break; + default: + LOG.error("Unknown table type " + hoodieHiveClient.getTableType()); + throw new InvalidTableException(hoodieHiveClient.getBasePath()); + } + } + protected void syncHoodieTable(String tableName, boolean useRealtimeInputFormat, boolean readAsOptimized) { LOG.info("Trying to sync hoodie table " + tableName + " with base path " + hoodieHiveClient.getBasePath() diff --git a/hudi-sync/hudi-hive-sync/src/main/java/org/apache/hudi/hive/replication/GlobalHiveSyncTool.java b/hudi-sync/hudi-hive-sync/src/main/java/org/apache/hudi/hive/replication/GlobalHiveSyncTool.java index 19c23b701..1d225cb84 100644 --- a/hudi-sync/hudi-hive-sync/src/main/java/org/apache/hudi/hive/replication/GlobalHiveSyncTool.java +++ b/hudi-sync/hudi-hive-sync/src/main/java/org/apache/hudi/hive/replication/GlobalHiveSyncTool.java @@ -21,7 +21,6 @@ package org.apache.hudi.hive.replication; import org.apache.hudi.common.fs.FSUtils; import org.apache.hudi.common.model.HoodieTableType; import org.apache.hudi.common.util.Option; -import org.apache.hudi.exception.InvalidTableException; import org.apache.hudi.hive.HiveSyncTool; import org.apache.hadoop.conf.Configuration; @@ -43,20 +42,7 @@ public class GlobalHiveSyncTool extends HiveSyncTool { @Override public void syncHoodieTable() { - switch (hoodieHiveClient.getTableType()) { - case COPY_ON_WRITE: - syncHoodieTable(snapshotTableName, false, false); - break; - case MERGE_ON_READ: - // sync a RO table for MOR - syncHoodieTable(roTableName.get(), false, true); - // sync a RT table for MOR - syncHoodieTable(snapshotTableName, true, false); - break; - default: - LOG.error("Unknown table type " + hoodieHiveClient.getTableType()); - throw new InvalidTableException(hoodieHiveClient.getBasePath()); - } + doSync(); } @Override