Details
-
Bug
-
Status: Closed
-
Blocker
-
Resolution: Fixed
-
0.12.1
Description
The flash table failed to synchronize the hive metadata. After using the flash catalog and specifying changlog.enabled=true and hive_sync.skip_ro_suffix = true, the real-time writing to the table fails to synchronize the hive metadata.
I guess the reason is:
When using the Flink catalog to create the Flink table, the hive table will be created first. The default value for creating a hive table is none_ hoodie_ The operation field, but the Flink table has this field. The inconsistent fields cause synchronization failure.
- sql
CREATE TABLE datagen ( id INT, name string, ts3 timestamp(3) ) WITH ( 'connector' = 'datagen', 'rows-per-second'='10', 'fields.id.kind'='sequence', 'fields.id.start'='1', 'fields.id.end'='1000' ); CREATE CATALOG myhudi WITH( 'type' = 'hudi', 'default-database' = 'default', 'catalog.path' = '/user/hdpu/warehouse', 'mode' = 'hms', 'hive.conf.dir' = 'hdfs:///user/hdpu/streamx/conf_data/hive_conf', -- table-prop. properties.It is used to add attributes by default when creating tables. 'table-prop.connector' = 'hudi', 'table-prop.table.type' = 'MERGE_ON_READ', 'table-prop.compaction.tasks' = '4', 'table-prop.write.tasks' = '4', 'table-prop.index.bootstrap.enabled' = 'true', 'table-prop.hive_sync.skip_ro_suffix' = 'true', 'table-prop.compaction.delta_commits' = '1', 'table-prop.compaction.async.enabled' = 'true', 'table-prop.changelog.enabled' = 'true', 'table-prop.index.type' = 'BUCKET', 'table-prop.index.global.enabled' = 'true', 'table-prop.read.utc-timezone' = 'false' ); CREATE CATALOG myhive WITH ( 'type' = 'hive', 'default-database' = 'default', 'hive-conf-dir' = 'hdfs:///user/hdpu/streamx/conf_data/hive_conf' ); drop table if exists myhive.test_hudi3.hudi_datagen_incre; drop table if exists myhudi.test_hudi3.hudi_datagen_incre; create table if not exists myhudi.test_hudi3.hudi_datagen_incre (id bigint not null, name string,ts3 timestamp(3) ,PRIMARY KEY (`id`) NOT ENFORCED ) ; show create table myhudi.test_hudi3.hudi_datagen_incre; insert into myhudi.test_hudi3.hudi_datagen_incre select id,name,ts3 from datagen;
- error
22/10/25 13:55:01 ERROR HMSDDLExecutor: Failed to update table for hudi_datagen_incre_ro InvalidOperationException(message:The following columns have types incompatible with the existing columns in their respective positions : id) at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$alter_table_with_environment_context_result$alter_table_with_environment_context_resultStandardScheme.read(ThriftHiveMetastore.java:59744) at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$alter_table_with_environment_context_result$alter_table_with_environment_context_resultStandardScheme.read(ThriftHiveMetastore.java:59730) at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$alter_table_with_environment_context_result.read(ThriftHiveMetastore.java:59672) at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:86) at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Client.recv_alter_table_with_environment_context(ThriftHiveMetastore.java:1693) at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Client.alter_table_with_environment_context(ThriftHiveMetastore.java:1677) at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.alter_table_with_environmentContext(HiveMetaStoreClient.java:375) at org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient.alter_table_with_environmentContext(SessionHiveMetaStoreClient.java:322) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.invoke(RetryingMetaStoreClient.java:173) at com.sun.proxy.$Proxy32.alter_table_with_environmentContext(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.hadoop.hive.metastore.HiveMetaStoreClient$SynchronizedHandler.invoke(HiveMetaStoreClient.java:2336) at com.sun.proxy.$Proxy32.alter_table_with_environmentContext(Unknown Source) at org.apache.hudi.hive.ddl.HMSDDLExecutor.updateTableDefinition(HMSDDLExecutor.java:158) at org.apache.hudi.hive.HoodieHiveSyncClient.updateTableSchema(HoodieHiveSyncClient.java:169) at org.apache.hudi.hive.HiveSyncTool.syncSchema(HiveSyncTool.java:289) at org.apache.hudi.hive.HiveSyncTool.syncHoodieTable(HiveSyncTool.java:217) at org.apache.hudi.hive.HiveSyncTool.doSync(HiveSyncTool.java:158) at org.apache.hudi.hive.HiveSyncTool.syncHoodieTable(HiveSyncTool.java:142) at org.apache.hudi.sink.StreamWriteOperatorCoordinator.doSyncHive(StreamWriteOperatorCoordinator.java:327) at org.apache.hudi.sink.utils.NonThrownExecutor.lambda$wrapAction$0(NonThrownExecutor.java:130) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) 22/10/25 13:55:01 INFO metastore: Closed a connection to metastore, current connections: 2 22/10/25 13:55:01 ERROR StreamWriteOperatorCoordinator: Executor executes action [sync hive metadata for instant 20221025135500902] error org.apache.hudi.exception.HoodieException: Got runtime exception when hive syncing hudi_datagen_incre at org.apache.hudi.hive.HiveSyncTool.syncHoodieTable(HiveSyncTool.java:145) at org.apache.hudi.sink.StreamWriteOperatorCoordinator.doSyncHive(StreamWriteOperatorCoordinator.java:327) at org.apache.hudi.sink.utils.NonThrownExecutor.lambda$wrapAction$0(NonThrownExecutor.java:130) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: org.apache.hudi.hive.HoodieHiveSyncException: Failed to update table for hudi_datagen_incre_ro at org.apache.hudi.hive.ddl.HMSDDLExecutor.updateTableDefinition(HMSDDLExecutor.java:161) at org.apache.hudi.hive.HoodieHiveSyncClient.updateTableSchema(HoodieHiveSyncClient.java:169) at org.apache.hudi.hive.HiveSyncTool.syncSchema(HiveSyncTool.java:289) at org.apache.hudi.hive.HiveSyncTool.syncHoodieTable(HiveSyncTool.java:217) at org.apache.hudi.hive.HiveSyncTool.doSync(HiveSyncTool.java:158) at org.apache.hudi.hive.HiveSyncTool.syncHoodieTable(HiveSyncTool.java:142) ... 5 more Caused by: InvalidOperationException(message:The following columns have types incompatible with the existing columns in their respective positions : id) at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$alter_table_with_environment_context_result$alter_table_with_environment_context_resultStandardScheme.read(ThriftHiveMetastore.java:59744) at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$alter_table_with_environment_context_result$alter_table_with_environment_context_resultStandardScheme.read(ThriftHiveMetastore.java:59730) at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$alter_table_with_environment_context_result.read(ThriftHiveMetastore.java:59672) at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:86) at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Client.recv_alter_table_with_environment_context(ThriftHiveMetastore.java:1693) at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Client.alter_table_with_environment_context(ThriftHiveMetastore.java:1677) at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.alter_table_with_environmentContext(HiveMetaStoreClient.java:375) at org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient.alter_table_with_environmentContext(SessionHiveMetaStoreClient.java:322) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.invoke(RetryingMetaStoreClient.java:173) at com.sun.proxy.$Proxy32.alter_table_with_environmentContext(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.hadoop.hive.metastore.HiveMetaStoreClient$SynchronizedHandler.invoke(HiveMetaStoreClient.java:2336) at com.sun.proxy.$Proxy32.alter_table_with_environmentContext(Unknown Source) at org.apache.hudi.hive.ddl.HMSDDLExecutor.updateTableDefinition(HMSDDLExecutor.java:158) ... 10 more 22/10/25 13:55:04 INFO PermanentBlobCache: Shutting down BLOB cache 22/10/25 13:55:04 INFO TaskExecutorStateChangelogStoragesManager: Shutting down TaskExecutorStateChangelogStoragesManager. 22/10/25 13:55:04 INFO TaskExecutorLocalStateStoresManager: Shutting down TaskExecutorLocalStateStoresManager. 22/10/25 13:55:04 INFO TransientBlobCache: Shutting down BLOB cache 22/10/25 13:55:04 INFO FileChannelManagerImpl: FileChannelManager removed spill file directory C:\Users\CHENCH~1\AppData\Local\Temp\flink-io-85e079a0-9ddd-4a24-93ef-bedbe7ceb4bd 22/10/25 13:55:04 INFO BlobServer: Stopped BLOB server at 0.0.0.0:64860 22/10/25 13:55:04 INFO FileCache: removed file cache directory C:\Users\CHENCH~1\AppData\Local\Temp\flink-dist-cache-467c6e08-9173-4fa7-81b2-f4411b3167b6 22/10/25 13:55:04 INFO FileChannelManagerImpl: FileChannelManager removed spill file directory C:\Users\CHENCH~1\AppData\Local\Temp\flink-netty-shuffle-4a0bcf54-acde-410e-82a9-6d808dd35ca7Process finished with exit code 130
Attachments
Attachments
Issue Links
- links to