Spark读取hive数据文件

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

}

}

    原文作者:起个什么呢称呢
    原文地址: https://www.jianshu.com/p/c1c137379e96
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞