Spark连接mysql

spark连接mysql,注意mysql的配置等问题需要在pom文件中添加。

版本根据自己版本对应添加。

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.22</version>
</dependency>
这是spark连接mysql文件:

package SqlSpark

import org.apache.spark.{SparkConf, SparkContext}


object sqlSpark {

  case class zbh_test(day_id:String, prvnce_id:String,pv_cnts:Int)

  def main(args: Array[String]) {
    val conf = new SparkConf().setAppName("mysql").setMaster("local[4]")
    val sc = new SparkContext(conf)
    val sqlContext = new org.apache.spark.sql.SQLContext(sc)


    val sql="select id,region,city,company,name from tb_user_imei"
    //定义mysql信息
    val jdbcDF = sqlContext.read.format("jdbc").options(
      Map("url"->"jdbc:mysql://localhost:3306/student",
        "dbtable"->s"(${sql}) as table01",
        "driver"->"com.mysql.jdbc.Driver",
        "user"-> "root",
        //"partitionColumn"->"day_id",
        "lowerBound"->"0",
        "upperBound"-> "1000",
        //"numPartitions"->"2",
        "fetchSize"->"100",
        "password"->"root")
    ).load()

//        jdbcDF.show()
    jdbcDF.collect().take(20).foreach(println) //终端打印DF中的数据。

  }
}

### 如何使用 Spark 连接 MySQL 数据库 #### 创建 SparkSession 并配置连接属性 为了使 Spark 应用程序能够与 MySQL 数据库通信,需要创建 `SparkSession` 实例并配置必要的参数: ```scala import org.apache.spark.sql.SparkSession val spark = SparkSession.builder() .appName("Spark MySQL Example") .config("spark.master", "local") .config("spark.sql.warehouse.dir", "/user/hive/warehouse") .config("spark.sql.catalogImplementation", "hive") .getOrCreate() // 设置 MySQL 驱动加载 Class.forName("com.mysql.jdbc.Driver").newInstance()[^3] // 定义连接属性 val connectionProperties = new java.util.Properties() connectionProperties.put("user", "your_username") connectionProperties.put("password", "your_password")[^2] ``` #### 构建 JDBC URL 和读取数据 构建用于描述目标数据库位置的 JDBC URL 字符串,并利用它来执行 SQL 查询从而获取所需的数据集。 ```scala val jdbcUrl = "jdbc:mysql://localhost:3306/database_name" // 使用 jdbc 方法从 MySQL 中读取 'bank' 表的数据至 DataFrame val dfBank = spark.read.jdbc(jdbcUrl, "bank", connectionProperties) dfBank.show() // 展示部分记录 ``` #### 处理和分析数据 一旦获得了来自 MySQL 的数据帧对象之后就可以对其进行各种转换操作了。比如下面这段代码实现了基于职业字段(`job`)对员工数量进行计数的功能: ```scala val jobCountsDF = dfBank.groupBy("job").count().orderBy($"count".desc) jobCountsDF.show(10) // 只展示前十项结果 ``` #### 关闭 SparkSession 当所有的处理工作完成后应当记得终止会话以释放占用着的各种资源。 ```scala spark.stop() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值