用Scala去操作MySQL数据库

前言

本文用Scala去操作JDBC。
本文用原生态的scala语言来写,工作中不建议这样写,工作中都是用框架来写的。

要操作MySQL需要:
MySQL JDBC编程 的套路:
1)MySQL的驱动(需要这个驱动来去操作MySQL)
2)需要获取connection信息,这是一个重量级的过程,要经过磁盘IO、网络IO,这个一般要借助一个连接池,用到从里面拿,用完还回去。用pool比直接获取connection性能要高一些
3)SQL Statement 把SQL语句传进去
4)ResultSet 拿到SQL执行的结果集
5)close 释放资源

IO编程套路:
1)打开资源
2)业务处理
3)释放资源

代码开发

首先在pom,xml文件中添加相关依赖什么的

  <properties>
     <scala.version>2.11.8</scala.version>
    <mysql.version>5.1.28</mysql.version>
  </properties>
  
  <dependencies>
    <!--Scala的依赖-->
    <dependency>
      <groupId>org.scala-lang</groupId>
      <artifactId>scala-library</artifactId>
      <version>${scala.version}</version>
    </dependency>
 <!--添加MySQL驱动-->
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.28</version>
      </dependency>
  </dependencies>

代码如下:

package com.ruozedata.bigdata.scala03

import java.sql.DriverManager

object ScalaJDBCApp {
  def main(args: Array[String]): Unit = {

    val url = "jdbc:mysql://hadoop001:3306/ruoze_d6"
    val user = "root"
    val password = "123456"
    val sql = "select DB_ID,DB_LOCATION_URI,NAME from dbs"

//这个地方在生产上要加上
//这个地方的作用是把Java驱动加进来
//    Class.forName("com.mysql.jdbc.Driver")   //Java中的  scala也可以用
    classOf[com.mysql.jdbc.Driver]             //scala中的

    val connetcion = DriverManager.getConnection(url,user,password)
    val stmt =connetcion.createStatement()   //通过connection创建一个Statement
    val rs = stmt.executeQuery(sql)        //通过Statement,执行SQL语句
    while (rs.next()){
      val dbid = rs.getLong(1)
      val location = rs.getString(2)
      val name = rs.getString(3)

      println(dbid + " " + location + "  " + name)
    }
    rs.close()
    stmt.close()
    connetcion.close()
  }
}

运行结果;

1 hdfs://10-9-140-90:9000/user/hive/warehouse  default
6 hdfs://10-9-140-90:9000/user/hive/warehouse/d6_test.db  d6_test
11 hdfs://10-9-140-90:9000/user/hive/warehouse/test.db  test
16 hdfs://10-9-140-90:9000/d6_hive/directory  test2
21 hdfs://10-9-140-90:9000/user/hive/warehouse/g6_hadoop.db  g6_hadoop
31 hdfs://hadoop001:9000/user/hive/warehouse/g6.db  g6

Process finished with exit code 0

以上代码只是简单写了下过程,实际上异常捕获什么的都没有加进去。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Scala和Spark都可以操作MySQL数据库,具体步骤如下: 1. 导入MySQL JDBC驱动 在Scala或Spark程序中,需要先导入MySQL JDBC驱动,可以通过以下代码实现: ```scala Class.forName("com.mysql.jdbc.Driver") ``` 2. 创建MySQL连接 在Scala或Spark程序中,需要创建MySQL连接,可以通过以下代码实现: ```scala val url = "jdbc:mysql://localhost:3306/test" val username = "root" val password = "123456" val conn = DriverManager.getConnection(url, username, password) ``` 其中,url为MySQL数据库的连接地址,username和password为MySQL数据库的用户名和密码。 3. 执行MySQL查询 在Scala或Spark程序中,可以通过以下代码执行MySQL查询: ```scala val stmt = conn.createStatement() val rs = stmt.executeQuery("SELECT * FROM users") while (rs.next()) { val id = rs.getInt("id") val name = rs.getString("name") val age = rs.getInt("age") println(s"id=$id, name=$name, age=$age") } ``` 其中,stmt为MySQL的Statement对象,rs为查询结果集。 4. 关闭MySQL连接 在Scala或Spark程序中,需要关闭MySQL连接,可以通过以下代码实现: ```scala rs.close() stmt.close() conn.close() ``` 以上就是Scala和Spark操作MySQL的基本步骤。 ### 回答2: Scala是一种集成了面向对象编程和函数式编程的编程语言,由于其简洁和易读性,越来越受到开发者的喜爱。Spark则是一种大数据处理框架,具有高度的可扩展性和灵活性,适用于各种大数据场景。而对于操作MySQLScala和Spark都提供了一定的支持,下面将分别介绍它们的相关操作Scala操作MySQL Scala中使用MySQL可以使用Java JDBC API来实现,需要导入MySQL JDBC驱动,示例如下: ``` import java.sql.{Connection, DriverManager, ResultSet} object ScalaMySQL extends App { // 加载MySQL JDBC驱动 Class.forName("com.mysql.cj.jdbc.Driver") // 建立连接 val conn: Connection = DriverManager.getConnection( "jdbc:mysql://localhost:3306/test?useSSL=false", "root", "password") // 执行查询 val stmt = conn.createStatement() val rs: ResultSet = stmt.executeQuery("SELECT * FROM users") while (rs.next()) { val id = rs.getInt("id") val name = rs.getString("name") println(s"ID: $id, Name: $name") } // 关闭连接 rs.close() stmt.close() conn.close() } ``` 在该示例代码中,我们先加载MySQL JDBC驱动,然后建立连接并执行查询操作,最后关闭连接。 Spark操作MySQL 对于Spark,我们可以使用Spark SQL的相关API来操作MySQL数据库,需要先导入MySQL JDBC驱动并配置连接信息,示例如下: ``` import org.apache.spark.sql.{DataFrame, SparkSession} object SparkMySQL extends App { // 配置MySQL连接信息 val jdbcHostname = "localhost" val jdbcPort = 3306 val jdbcDatabase = "test" val jdbcUsername = "root" val jdbcPassword = "password" val jdbcUrl = s"jdbc:mysql://${jdbcHostname}:${jdbcPort}/${jdbcDatabase}?user=${jdbcUsername}&password=${jdbcPassword}" // 创建SparkSession val spark = SparkSession.builder() .appName("SparkMySQL") .master("local[*]") .getOrCreate() // 读取MySQL中的表数据 val tableDF: DataFrame = spark.read.jdbc(jdbcUrl, "users", new Properties()) // 显示表数据 tableDF.show() // 关闭SparkSession spark.stop() } ``` 在该示例代码中,我们先配置MySQL连接信息,然后创建一个SparkSession,接着使用`read.jdbc()`方法读取MySQL数据库中的表数据,最后通过`show()`方法展示数据。值得注意的是,如果表数据较大,可能需要使用分区读取和并行处理等优化方式。 总结 两种语言的方法都比较简单明了,Scala直接使用JDBC API进行操作,而Spark则使用Spark SQL的相关API,但都需要先导入MySQL JDBC驱动和配置连接信息。无论采用哪种方法,都需要注意安全性、性能和扩展性等问题,以使得操作MySQL更加高效、稳定和可靠。 ### 回答3: Scala是一门功能强大且可以与Java互操作的静态类型编程语言,它可以为大规模数据处理和分布式系统编程提供解决方案。而Spark则是一种快速的大数据处理框架,可以同时支持处理大型数据和实时数据。接下来,我们将讨论Scala和Spark如何与MySQL进行交互。 首先,Scala和Spark都支持使用JDBC API来连接MySQL数据库。在Scala中,我们可以使用Java的JDBC API来连接MySQL数据库并执行SQL语句,以执行数据的读取和入。可以使用MySQL的Java驱动程序(mysql-connector-java),并在Scala中使用它来建立连接并执行SQL查询。 在Spark中,我们可以使用Spark SQL模块来处理MySQL数据。Spark SQL将JDBC连接封装在Spark DataFrame API中,这使得我们可以轻松地将数据MySQL中读取到Spark中,然后对其进行处理。Spark SQL提供了许多连接器,包括JDBC连接器,可以轻松地将数据从外部数据存储(如MySQL)加载到Spark中。 除了使用JDBC连接器外,Spark也提供了用于连接各种数据源(包括MySQL)的扩展API。例如,我们可以使用Spark的Connector API来编自己的自定义连接器(Custom connector),这些连接器可以与任何框架进行交互并支持自定义数据源。此外,Spark还提供了一种名为Spark Streaming的实时流处理框架,可以与MySQL数据源进行交互,并在实时流处理环境中进行数据处理。 总结而言,Scala和Spark都能够灵活地与MySQL数据库进行交互,以实现大规模数据处理和分析。无论是在Scala中使用Java JDBC API,还是在Spark中使用Spark SQL模块和连接器,都可以方便地将MySQL数据集成到Scala和Spark的大数据生态系统中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值