美文网首页
Spark读取hive数据文件

Spark读取hive数据文件

作者: 起个什么呢称呢 | 来源:发表于2017-06-17 12:24 被阅读1000次

    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()

    }

    }

    相关文章

      网友评论

          本文标题:Spark读取hive数据文件

          本文链接:https://www.haomeiwen.com/subject/anedxxtx.html