SparkSQL(13):spark操作hive中不同数据库的两种方法

一、实现功能

sparksql代码中多需要读取hive中不同库的表,本文两种方法实现如何从代码中实现操作不同数据库的实现。

二、实现方法

1.pom.xml依赖

    <!-- Spark Core -->
    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-core_2.11</artifactId>
      <version>${spark.version}</version>
      <scope>compile</scope>
    </dependency>
    <!-- Spark SQL -->
    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-sql_2.11</artifactId>
      <version>${spark.version}</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-hive_2.11</artifactId>
      <version>${spark.version}</version>
      <scope>compile</scope>
    </dependency>

2.相关配置文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cmcGcgh0-1599991343864)(Scala解析json字符串.assets/1599991223648.png)]

3.代码

package _20200913module

import org.apache.spark.sql.SparkSession

/**
  * Created by Administrator on 2018/10/1.
  * Hive Comtext 的使用
  * 使用时需要通过 --jars 把mysql的驱动传递到classpath
  */
object HiveContextApp {
  def main(args: Array[String]): Unit = {

//    val path=args(0)

    //1)创建相应的Context
    val spark= SparkSession
      .builder().appName("HiveContextApp")
      .master("local[2]")
      .config("spark.sql.parquet.writeLegacyFormat", "true")
      .config("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
      .config("spark.sql.hive.manageFilesourcePartitions", "false")
      .enableHiveSupport()
      .getOrCreate()

    val sc =spark.sparkContext
    //sql相关
    val sql=spark.sqlContext
    sc.textFile("datas/info.txt")

    //2)使用test数据库
    //方法1
    sql.sql("use test") //这个是可以的
    val tab= sql.table("movie_info")
    tab.show()

    //方法2
    sql.sql("select * from test.movie_info").show()

    /**
      * +-----------+--------------------+
      * |      movie|            category|
      * +-----------+--------------------+
      * |     《疑犯追踪》|    [悬疑, 动作, 科幻, 剧情]|
      * |《Lie to me》|[悬疑, 警匪, 动作, 心理, 剧情]|
      * |     《战狼 2》|        [战争, 动作, 灾难]|
      * +-----------+--------------------+
      *
      * +-----------+--------------------+
      * |      movie|            category|
      * +-----------+--------------------+
      * |     《疑犯追踪》|    [悬疑, 动作, 科幻, 剧情]|
      * |《Lie to me》|[悬疑, 警匪, 动作, 心理, 剧情]|
      * |     《战狼 2》|        [战争, 动作, 灾难]|
      * +-----------+--------------------+
      */
    //3)关闭context
    sc.stop()
  }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值