Spark SQL连接获取MySQL、Hive、HDFS上的数据

本篇所有操作在Idea上完成

Spark To MySQL

  • 首先要在pom.xml中添加依赖包(根据的自己的使用的版本修改,不清楚的可以去maven官网查找自己对应版本的代码),对项目创建不清楚的可以:
    点击这里
	<dependency>
      <groupId>mysqlgroupId>
      <artifactId>mysql-connector-javaartifactId>
      <version>5.1.36version>
    dependency>
  • 操作代码
object SparkToMysql {
  def main(args: Array[String]): Unit = {
    //获取SparkSession实例
    val spark = SparkSession.builder().master("local[*]").appName("mysql").getOrCreate()
    //定义url格式为:“jdbc:mysql://IP地址:3306/库名”
    val url="jdbc:mysql://192.168.**.**:3306/hive"
    //mysql用户名
    val user="root"
    //mysql密码
    val password="ok"
    //deriver
    val driver="com.mysql.jdbc.Driver"
    //创建Properties实例
    val prop=new Properties()
    //将用户名、密码以及driver放入prop对象中
    prop.setProperty("user",user)
    prop.setProperty("password",password)
    prop.setProperty("driver",driver)
    //通过spark.read.jdbc的方式将url、表名以及配置信息传入,即可读取
    val df: DataFrame = spark.read.jdbc(url,"TBLS",prop)
  }
}

Spark To Hive

  • 在pom.xml中添加依赖(同样根据自己使用的版本情况修改版本号)
	<dependency>
      <groupId>org.apache.sparkgroupId>
      <artifactId>spark-hive_2.11artifactId>
      <version>2.1.1version>
    dependency>
  • 操作代码
object SparksqlOnHiveDemo {
  def main(args: Array[String]): Unit = {
    //配置SparkSession,启用对Hive的支持,配置hive的IP与端口
    val spark = SparkSession.builder()
      .appName("hive")
      .master("local[*]")
      .config("hive.metastore.uris","thrift://192.168.**.**:9083")
      .enableHiveSupport()
      .getOrCreate()
    //spark默认连接hive default库
    //连接其他库需要"库名.表名"
    val df:DataFrame = spark.sql("select * from hive_demo.employee")
  }
}

Spark To HDFS

  • 读取HDFS上的数据无需添加依赖
  • 操作代码
object SparkToHDFS {
  def main(args: Array[String]): Unit = {
    val spark = SparkSession.builder().appName("hdfs").master("local[*]").getOrCreate()
    //testFile默认读取本地路径,如果在前面加上"hdfs://IP地址:9000/路径"即可读取HDFS上的数据
    val ds: Dataset[String] = spark.read.textFile("hdfs://192.168.**.**:9000/test/a.txt")
  }
}

你可能感兴趣的:(菜鸟也学大数据,Spark,mysql,hive,数据库,spark,hdfs)