You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hudi.apache.org by si...@apache.org on 2022/01/07 18:06:39 UTC
[hudi] 17/21: [HUDI-3171] Sync empty table to hive metastore (#4511)
This is an automated email from the ASF dual-hosted git repository.
sivabalan pushed a commit to branch release-0.10.1-rc1
in repository https://gitbox.apache.org/repos/asf/hudi.git
commit 8fdcbb1e0c48c71d2f50bdc5d69823d23b437896
Author: Danny Chan <yu...@gmail.com>
AuthorDate: Wed Jan 5 16:41:33 2022 +0800
[HUDI-3171] Sync empty table to hive metastore (#4511)
---
.../apache/hudi/common/table/TableSchemaResolver.java | 11 +++++++++--
.../java/org/apache/hudi/hive/HoodieHiveClient.java | 17 ++++++++++-------
2 files changed, 19 insertions(+), 9 deletions(-)
diff --git a/hudi-common/src/main/java/org/apache/hudi/common/table/TableSchemaResolver.java b/hudi-common/src/main/java/org/apache/hudi/common/table/TableSchemaResolver.java
index 0508c1b..a953ac3 100644
--- a/hudi-common/src/main/java/org/apache/hudi/common/table/TableSchemaResolver.java
+++ b/hudi-common/src/main/java/org/apache/hudi/common/table/TableSchemaResolver.java
@@ -198,8 +198,15 @@ public class TableSchemaResolver {
*/
public MessageType getTableParquetSchema() throws Exception {
Option<Schema> schemaFromCommitMetadata = getTableSchemaFromCommitMetadata(true);
- return schemaFromCommitMetadata.isPresent() ? convertAvroSchemaToParquet(schemaFromCommitMetadata.get()) :
- getTableParquetSchemaFromDataFile();
+ if (schemaFromCommitMetadata.isPresent()) {
+ return convertAvroSchemaToParquet(schemaFromCommitMetadata.get());
+ }
+ Option<Schema> schemaFromTableConfig = metaClient.getTableConfig().getTableCreateSchema();
+ if (schemaFromTableConfig.isPresent()) {
+ Schema schema = HoodieAvroUtils.addMetadataFields(schemaFromTableConfig.get(), withOperationField);
+ return convertAvroSchemaToParquet(schema);
+ }
+ return getTableParquetSchemaFromDataFile();
}
/**
diff --git a/hudi-sync/hudi-hive-sync/src/main/java/org/apache/hudi/hive/HoodieHiveClient.java b/hudi-sync/hudi-hive-sync/src/main/java/org/apache/hudi/hive/HoodieHiveClient.java
index 287de57..acaf6ca 100644
--- a/hudi-sync/hudi-hive-sync/src/main/java/org/apache/hudi/hive/HoodieHiveClient.java
+++ b/hudi-sync/hudi-hive-sync/src/main/java/org/apache/hudi/hive/HoodieHiveClient.java
@@ -19,6 +19,7 @@
package org.apache.hudi.hive;
import org.apache.hudi.common.fs.FSUtils;
+import org.apache.hudi.common.table.timeline.HoodieInstant;
import org.apache.hudi.common.table.timeline.HoodieTimeline;
import org.apache.hudi.common.util.Option;
import org.apache.hudi.common.util.StringUtils;
@@ -331,13 +332,15 @@ public class HoodieHiveClient extends AbstractSyncHoodieClient {
@Override
public void updateLastCommitTimeSynced(String tableName) {
// Set the last commit time from the TBLproperties
- String lastCommitSynced = activeTimeline.lastInstant().get().getTimestamp();
- try {
- Table table = client.getTable(syncConfig.databaseName, tableName);
- table.putToParameters(HOODIE_LAST_COMMIT_TIME_SYNC, lastCommitSynced);
- client.alter_table(syncConfig.databaseName, tableName, table);
- } catch (Exception e) {
- throw new HoodieHiveSyncException("Failed to get update last commit time synced to " + lastCommitSynced, e);
+ Option<String> lastCommitSynced = activeTimeline.lastInstant().map(HoodieInstant::getTimestamp);
+ if (lastCommitSynced.isPresent()) {
+ try {
+ Table table = client.getTable(syncConfig.databaseName, tableName);
+ table.putToParameters(HOODIE_LAST_COMMIT_TIME_SYNC, lastCommitSynced.get());
+ client.alter_table(syncConfig.databaseName, tableName, table);
+ } catch (Exception e) {
+ throw new HoodieHiveSyncException("Failed to get update last commit time synced to " + lastCommitSynced, e);
+ }
}
}
}