spark 操作 hive[删除分区表]
1:
使用HiveServer 的方式
val tablename=”hive_tablename”
def dropPartitions(tablename:String):unit={
val HIVE_SERVER=”jdbc:hive2://ip:10000″
import java.sql.DriverManager
Class forName(“org.apche.hive.jdbc.hiveDriver”)
val conn=DriverManager.getConnection(HIVE_SERVER,XXX)
val stmt =conn.createStatement()
val addSQL=””
stmt.execute(addSQL)
conn.close()
使用HiveContetx
先创建一个HiveContext的一个对象。
val hivecotext=new HiveContext()
功能函数
val tablename=”hive_tablename”
def dropPartitions(tablename:String,hivecotext:HiveContext):unit{
sqlContext.sql(查询语句)
}
*********************************
查看spark 是否支持hive
spark-shell
import org.apache.spark.sql.hive.HiveContext
******************************************
package com.spark.hive
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.sql.hive.HiveContext
// 导入三个包,配置包,上下文包,hive 包
object opeation {
def main(args: Array[String]): Unit = {
val conf =new SparkConf().setMaster(“master”).setAppName(“opeation”) // 新建设置对象,并指定运行APP程序的机器和APP的名字
val sc=new SparkContext(conf) // 将配置好的对象作为参数给上下文,上下文作为一个Spark 程序执行的入口
val hivecontext= new HiveContext(sc) //再把配置好的上下文对象作为参数传给hive 目的是针对整个APP执行sql
hivecontext.sql(“userdbname”)
hivecontext.sql(“drop table if exists people”)
hivecontext.sql(“create table if not exists people(name string,age int) row format delimited fields termimated by ‘\t’ lines terminated by ‘\n'” )
hivecontext.sql(“load data local inpath ‘path'”)
hivecontext.sql(“use dbname”)
hivecontext.sql(“select * from tablename”)
/*
* 通过HiveContext使用join直接基于hive中的两种表进行操作
*/
val resultDF=hivecontext.sql(“select pi.name,pi.age,ps.score “
+” from people pi join peopleScores ps on pi.name=ps.name”
+” where ps.score>90″)
/*
* 通过saveAsTable创建一张hive managed table,数据的元数据和数据即将放的具体位置都是由
* hive数据仓库进行管理的,当删除该表的时候,数据也会一起被删除(磁盘的数据不再存在)
*/
hivecontext.sql(“drop table if exists peopleResult”)
resultDF.saveAsTable(“peopleResult”)
/*
* 使用HiveContext的table方法可以直接读取hive数据仓库的Table并生成DataFrame,
* 接下来机器学习、图计算、各种复杂的ETL等操作
*/
val dataframeHive = hivecontext.table(“peopleResult”)
dataframeHive.show()
}
}