Spark连接各种数据源

Spark连接各种数据源

一、Spark连接mysql


import java.util.Properties

import org.apache.spark.sql.SparkSession

object ConnectMysql {
  /**
    * spark操作mysql
    * 1、首先将拷贝mysql-connector-java.5.1.38.jar驱动文件到spark的jars目录下
    *
    */
  def main(args: Array[String]): Unit = {
    //创建SparkSession
    val spark = SparkSession.builder()
      .master("local[4]") //设置master
      .appName(this.getClass.getName) // 设置appname
      .getOrCreate()
    // 设置要访问的mysql的url
    val url = "jdbc:mysql://single:3306/kb10"
    // 设置要访问的mysql的表名
    val tableName = "stusub"

    // 设置要访问的mysql的用户名, 密码, 数据库驱动类Driver
    val props = new Properties()
    props.setProperty("user", "root")
    props.setProperty("password", "root")
    props.setProperty("driver", "com.mysql.jdbc.Driver")

    // 通过spark.read.jdbc方法读取mysql中数据
    val df = spark.read.jdbc(url, tableName, props)
    
    df.printSchema() //打印schema信息
    
    df.show()
    
    // 将DataFrame数据写入到MySQL中, 追加方式
    df.write.mode("append").jdbc(url,tableName,props)
  }
}


二、Spark连接Hive


import org.apache.spark.sql.SparkSession

object ConnectHive {
  /**
    * 使用sparksql操作hive
    * SparkSQL与Hive集成
    * 拷贝hive配置文件内的hive-site.xml至spark的conf 文件夹下
    * 同时将hive-site.xml放到idea文件的资源目录下
    * 在idea中的hive-site.xml中添加配置:(hive元数据的地址,)9083为默认端口号
    * <property>
    * <name>hive.metastore.uris</name>
    * <value>thrift://single:9083</value>
    * </property>
    * 这样就可以使用sparksql访问操作hive中的元数据
    */
  def main(args: Array[String]): Unit = {
    创建SparkSession
    val spark = SparkSession.builder()
      .master("local[4]") //设置master
      .appName(this.getClass.getName) //设置appname
      .enableHiveSupport() //添加属性,允许sparksql操作hive
      .getOrCreate()
    
    // 读取Hive中数据表
    val df = spark.sql("select * from shoptest")
    df.show()
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值