voon created HUDI-6582: -------------------------- Summary: Table create schema's name should be set accordingly Key: HUDI-6582 URL: https://issues.apache.org/jira/browse/HUDI-6582 Project: Apache Hudi Issue Type: Bug Reporter: voon
When recreating a hudi table with an existing hoodie.properties, the name of the hudi table will be changed to "topLevelRecord". This ticket is a followup for HUDI-8587 to ensure that the name/namespace of the table is standardised accordingly. {code:java} test("Test Create Hoodie Table with existing hoodie.properties") { withTempDir { tmp => val tableName = generateTableName val tablePath = s"${tmp.getCanonicalPath}" spark.sql( s""" |create table $tableName ( | id int, | name string, | price double, | ts long |) using hudi | location '$tablePath' | tblproperties ( | primaryKey ='id', | type = 'cow', | preCombineField = 'ts' | ) """.stripMargin) // hoodie.table.create.schema={"type":"record","name":"h0_record","namespace":"hoodie.h0","fields":[{"name":"id","type":["int","null"]},{"name":"name","type":["string","null"]},{"name":"price","type":["double","null"]},{"name":"ts","type":["long","null"]}]}, but got {"type":"record","name":"topLevelRecord","fields":[{"name":"id","type":["int","null"]},{"name":"name","type":["string","null"]},{"name":"price","type":["double","null"]},{"name":"ts","type":["long","null"]}]} // drop the table without purging hdfs directory spark.sql(s"drop table $tableName".stripMargin) val tableSchemaAfterCreate1 = HoodieTableMetaClient.builder() .setConf(spark.sparkContext.hadoopConfiguration) .setBasePath(tablePath).build().getTableConfig.getTableCreateSchema // avro schema name and namespace should not change should not change spark.newSession().sql( s""" |create table $tableName ( | id int, | name string, | price double, | ts long |) using hudi | location '$tablePath' | tblproperties ( | primaryKey ='id', | type = 'cow', | preCombineField = 'ts' | ) """.stripMargin) /// hoodie.table.create.schema={"type":"record","name":"topLevelRecord","fields":[{"name":"id","type":["int","null"]},{"name":"name","type":["string","null"]},{"name":"price","type":["double","null"]},{"name":"ts","type":["long","null"]}]} val tableSchemaAfterCreate2 = HoodieTableMetaClient.builder() .setConf(spark.sparkContext.hadoopConfiguration) .setBasePath(tablePath).build().getTableConfig.getTableCreateSchema assertResult(tableSchemaAfterCreate1.get)(tableSchemaAfterCreate2.get) } {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)