From 6ee5b7a9fa36a73dacdaa0d9ee2a76b8b23c4900 Mon Sep 17 00:00:00 2001 From: Yuming Wang Date: Tue, 14 May 2019 00:58:35 +0800 Subject: [PATCH 1/2] Remove materialized view first --- .../sql/hive/client/HiveClientImpl.scala | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/client/HiveClientImpl.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/client/HiveClientImpl.scala index 92a1120673bf..b5d78f48d03f 100644 --- a/sql/hive/src/main/scala/org/apache/spark/sql/hive/client/HiveClientImpl.scala +++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/client/HiveClientImpl.scala @@ -856,20 +856,31 @@ private[hive] class HiveClientImpl( } def reset(): Unit = withHiveState { - client.getAllTables("default").asScala.foreach { t => - logDebug(s"Deleting table $t") - val table = client.getTable("default", t) + val allTables = client.getAllTables("default") + val (mvs, others) = allTables.asScala.map(t => client.getTable("default", t)) + .partition(_.getTableType.toString.equals("MATERIALIZED_VIEW")) + + // Remove materialized view first, otherwise caused a violation of foreign key constraint. + mvs.foreach { table => + val tableName = table.getTableName + logDebug(s"Deleting materialized view $tableName") + client.dropTable("default", table.getTableName) + } + + others.foreach { table => + val tableName = table.getTableName + logDebug(s"Deleting table $tableName") try { - client.getIndexes("default", t, 255).asScala.foreach { index => - shim.dropIndex(client, "default", t, index.getIndexName) + client.getIndexes("default", tableName, 255).asScala.foreach { index => + shim.dropIndex(client, "default", tableName, index.getIndexName) } if (!table.isIndexTable) { - client.dropTable("default", t) + client.dropTable("default", tableName) } } catch { case _: NoSuchMethodError => // HIVE-18448 Hive 3.0 remove index APIs - client.dropTable("default", t) + client.dropTable("default", tableName) } } client.getAllDatabases.asScala.filterNot(_ == "default").foreach { db => From 953194d0f23ddfe370bcb7888377f6c60824fe4c Mon Sep 17 00:00:00 2001 From: Yuming Wang Date: Tue, 14 May 2019 05:36:45 +0800 Subject: [PATCH 2/2] Reduce change --- .../spark/sql/hive/client/HiveClientImpl.scala | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/client/HiveClientImpl.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/client/HiveClientImpl.scala index b5d78f48d03f..b6a7c74cc8b4 100644 --- a/sql/hive/src/main/scala/org/apache/spark/sql/hive/client/HiveClientImpl.scala +++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/client/HiveClientImpl.scala @@ -862,25 +862,25 @@ private[hive] class HiveClientImpl( // Remove materialized view first, otherwise caused a violation of foreign key constraint. mvs.foreach { table => - val tableName = table.getTableName - logDebug(s"Deleting materialized view $tableName") - client.dropTable("default", table.getTableName) + val t = table.getTableName + logDebug(s"Deleting materialized view $t") + client.dropTable("default", t) } others.foreach { table => - val tableName = table.getTableName - logDebug(s"Deleting table $tableName") + val t = table.getTableName + logDebug(s"Deleting table $t") try { - client.getIndexes("default", tableName, 255).asScala.foreach { index => - shim.dropIndex(client, "default", tableName, index.getIndexName) + client.getIndexes("default", t, 255).asScala.foreach { index => + shim.dropIndex(client, "default", t, index.getIndexName) } if (!table.isIndexTable) { - client.dropTable("default", tableName) + client.dropTable("default", t) } } catch { case _: NoSuchMethodError => // HIVE-18448 Hive 3.0 remove index APIs - client.dropTable("default", tableName) + client.dropTable("default", t) } } client.getAllDatabases.asScala.filterNot(_ == "default").foreach { db =>