1
0

[HUDI-4079] Supports showing table comment for hudi with spark3 (#5546)

This commit is contained in:
Jin Xing
2022-05-11 22:28:58 +08:00
committed by GitHub
parent 4a8589f222
commit 7f0c1f3ddf
2 changed files with 38 additions and 13 deletions

View File

@@ -18,6 +18,7 @@
package org.apache.spark.sql.hudi package org.apache.spark.sql.hudi
import org.apache.hudi.DataSourceWriteOptions._ import org.apache.hudi.DataSourceWriteOptions._
import org.apache.hudi.HoodieSparkUtils
import org.apache.hudi.common.model.HoodieRecord import org.apache.hudi.common.model.HoodieRecord
import org.apache.hudi.common.table.{HoodieTableConfig, HoodieTableMetaClient} import org.apache.hudi.common.table.{HoodieTableConfig, HoodieTableMetaClient}
import org.apache.hudi.config.HoodieWriteConfig import org.apache.hudi.config.HoodieWriteConfig
@@ -641,4 +642,26 @@ class TestCreateTable extends HoodieSparkSqlTestBase {
|""".stripMargin |""".stripMargin
) )
} }
if (HoodieSparkUtils.gteqSpark3_2) {
test("Test create table with comment") {
val tableName = generateTableName
spark.sql(
s"""
| create table $tableName (
| id int,
| name string,
| price double,
| ts long
| ) using hudi
| comment "This is a simple hudi table"
| tblproperties (
| primaryKey = 'id',
| preCombineField = 'ts'
| )
""".stripMargin)
val shown = spark.sql(s"show create table $tableName").head.getString(0)
assertResult(true)(shown.contains("COMMENT 'This is a simple hudi table'"))
}
}
} }

View File

@@ -89,19 +89,21 @@ class HoodieCatalog extends DelegatingCatalogExtension
} }
override def loadTable(ident: Identifier): Table = { override def loadTable(ident: Identifier): Table = {
try { super.loadTable(ident) match {
super.loadTable(ident) match { case V1Table(catalogTable0) if sparkAdapter.isHoodieTable(catalogTable0) =>
case v1: V1Table if sparkAdapter.isHoodieTable(v1.catalogTable) => val catalogTable = catalogTable0.comment match {
HoodieInternalV2Table( case Some(v) =>
spark, val newProps = catalogTable0.properties + (TableCatalog.PROP_COMMENT -> v)
v1.catalogTable.location.toString, catalogTable0.copy(properties = newProps)
catalogTable = Some(v1.catalogTable), case _ =>
tableIdentifier = Some(ident.toString)) catalogTable0
case o => o }
} HoodieInternalV2Table(
} catch { spark = spark,
case e: Exception => path = catalogTable.location.toString,
throw e catalogTable = Some(catalogTable),
tableIdentifier = Some(ident.toString))
case o => o
} }
} }