Ta bort databas utan borttagning

Som standard släpper kommandot DROP DATABASE databasen och tar bort katalogen som är associerad med databasen från filsystemet.

Ibland kanske du vill ta bort databasen, men behålla den underliggande databaskatalogen intakt.

Exempelkod

Du kan använda den här exempelkoden för att ta bort databasen utan att ta bort den underliggande lagringsmappen.

import scala.collection.JavaConverters._
import org.apache.hadoop.hive.ql.metadata.Hive
import org.apache.hadoop.hive.conf.HiveConf
import org.apache.hadoop.hive.ql.session.SessionState

val hiveConf = new HiveConf(classOf[SessionState])
sc.hadoopConfiguration.iterator().asScala.foreach { kv =>
hiveConf.set(kv.getKey, kv.getValue)
}
sc.getConf.getAll.foreach {
case (k, v) => hiveConf.set(k, v)
}

hiveConf.setBoolean("hive.cbo.enable", false)
val state = new SessionState(hiveConf)
val hive = Hive.get(state.getConf)
println(state.getConf)

hive.dropDatabase("<database-name>", false, false, true)

Mer information om org.apache.hadoop.hive.ql.metadata.Hive finns i org.apache.hadoop.hive.ql.metadata.Hive