Spark On Hive

 Spark1.x 实现 Spark On Hive

package spark

import org.apache.spark.sql.{DataFrame, SaveMode}
import org.apache.spark.sql.hive.HiveContext
import org.apache.spark.{SparkConf, SparkContext}

/**
   *
   * @Description: TODO Spark On Hive
  * @ClassName: Spark
  * @Author: xqg
  * @Date: 2019/1/10 20:18
  *
  */
object SparkOnHive1 {
  def main(args: Array[String]): Unit = {
    val conf: SparkConf = new SparkConf().setAppName("SparkOnHive1").setMaster("local[2]")
    val sc = new SparkContext(conf)
    val sqlContext = new HiveContext(sc)

    //读取hive表
    //TODO 形式:库名.表名   ------> 2种写法
//    sqlContext.table("dataBase").createOrReplaceTempView("tableName")
    
    //TODO 使用哪个库 如:use databaseName
    sqlContext.sql("use sqlstudy")
    
    val df: DataFrame = sqlContext.sql(
      """
        |select *
        |from tableName
        |limit 10
      """.stripMargin)
    //TODO 或者sql语句写成下面这中形式
//    val df: DataFrame = sqlContext.sql("select * from tableName")
    /**
      * 运行时会出现类似这个错误 :
      * 出现错误(null) entry in command string: null chmod 0700
      * 解决办法:
      *
      * 在https://github.com/SweetInk/hadoop-common-2.7.1-bin中下载hadoop.dll,并拷贝到c:\windows\system32目录中。
      */

    df.show()

    //TODO 从Hive表中查询出数据后,保存到其他表中
    //TODO 保存的模式,如果存在就覆盖 Overwrite
    df.write.mode(SaveMode.Overwrite).saveAsTable("save_tableName")
    sc.stop()
  }
}

  Spark2.x 实现 Spark On Hive

package spark

import org.apache.spark.sql.{DataFrame, SparkSession}

/**
  * @Description: TODO 
  * @ClassName: SparkOnHive2
  * @Author: xqg
  * @Date: 2019/1/10 20:45
  *
  */
object SparkOnHive2 {
  def main(args: Array[String]): Unit = {
    val spark: SparkSession = SparkSession.builder()
      .appName("SparkOnHive2")
      .master("local[2]")
      .config("hadoop.home.dir","/user/hive/warehouse")
      .enableHiveSupport()
      .getOrCreate()

    //TODO 使用哪个库 如:use databaseName
    spark.sql("use databaseName")

    //TODO spark.sql("SQL 语句")
    val df: DataFrame = spark.sql("select * from tableName")
    df.show()
    spark.stop()
  }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值