spark使用Hive表操作
spark Hive表操作
之前很长一段时间是通过hiveServer操作Hive表的,一旦hiveServer宕掉就无法进行操作。
比如说一个修改表分区的操作
一.使用HiveServer的方式
val tblName = "hive_table"
def dropPartitions(tblName: String): Unit = {
val HIVE_SERVER = "jdbc:hive2://192.168.xx.xxx:10000"
import java.sql.DriverManager
Class.forName("org.apache.hive.jdbc.HiveDriver")
val conn = DriverManager.getConnection(HIVE_SERVER, "xxx", "")
val stmt = conn.createStatement()
val addSQL = s"msck repair table $tblName"
stmt.execute(addSQL)
conn.close()
}
二.使用HiveContext的方式
后来发现通过HiveContext可以实现同样的功能,却方便的多,也不用通过hiveServer,再也不怕hiveServer宕机啦~
先创建一个HiveContext,当然hiveContext也是可以对Hive表进行查询操作的
val sqlContext = new HiveContext(sc)
同样功能的函数
val tblName = "hive_table"
def dropPartitions(tblName: String,sqlContext :HiveContext): Unit = {
sqlContext.sql(s"msck repair table $tblName")
}