将数据灌入mysql中

本文介绍了如何将数据导入到MySQL数据库中,通过配置文件application.conf和使用ConfigHelper.scala进行相关操作。
package tools

import java.util.Properties

import config.ConfigHelper
import org.apache.spark.sql.{SaveMode, SparkSession}

//将列车出厂时间数据灌入mysql
object TrainTime2Mysql {
  def main(args: Array[String]): Unit = {
    //session
    val session=SparkSession
      .builder()
      //设置是否是在本地运行
      //*代表几个线程
      .master("local[*]")
      //设置进程的名称
      .appName(this.getClass.getName)
      //序列化
      .config("spark.serializer",ConfigHelper.serializer)
      .getOrCreate()
    //导入隐式转换
    import session.implicits._
    //读取数据
    //返回值是rdd
    val source = session.sparkContext.textFile(args(0))
    //处理数据
    //读取外部配置文件
    val props=new Properties()
    props.setProperty("driver",ConfigHelper.driver)
    props.setProperty("user",ConfigHelper.user)
    props.setProperty("password",ConfigHelper.password)
    //数据清洗
    source.map(_.split("\\|",-1)).filter(_.length>=2)
      //scalajdbc
      .map(arr=>(arr(0),arr(1)))
      //使用toDF()方法将RDD转换为DataFrame
      //DataFrame 表示矩阵数据表,有行索引和列索引
      //两列的列名分别为trainId和trainTime
      .toDF("trainId","trainTime")
      //DataFrame写入的模式一共有4种
      //SaveMode.Overwrite:覆盖已经存在的文件
      //SaveMode.Append:向存在的文件追加
      //SaveMode.Ignore:如果文件已存在,则忽略保存操作
      //SaveMode.ErrorIfExists:如果文件已存在,则报错
      .write.mode(SaveMode.Overwrite)
      //保存在TrainTime2Mysql这个表中
      .jdbc(ConfigHelper.url,"TrainTime2Mysql",props)
    //释放资源
    session.stop()
  }

}

相关配置文件
application.conf

#配置文件
#配置压缩格式
parquet.code="snappy"
#配置序列化方式
spark.serializer="org.apache.spark.serializer.KryoSerializer"
#配置jdbc链接
jdbc.url="jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8"
jdbc.driver="com.mysql.jdbc.Driver"
jdbc.user="root"
jdbc.password="000000"
#配置scalikejdbc链接
db.default.url="jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8"
db.default.driver="com.mysql.jdbc.Driver"
db.default.user="root"
db.default.password="000000"

ConfigHelper.scala

package config

import com.typesafe.config.{Config, ConfigFactory}

object ConfigHelper {
  //加载配置文件
  private lazy val load: Config = ConfigFactory.load()
  //加载压缩格式
  val parquetCode: String = load.getString("parquet.code")
  //加载序列化方式
  val serializer: String = load.getString("spark.serializer")
  //加载jdbc
  val url: String = load.getString("jdbc.url")
  val driver: String = load.getString("jdbc.driver")
  val user: String = load.getString("jdbc.user")
  val password: String = load.getString("jdbc.password")
  //加载scalikejdbc
  val url2: String = load.getString("db.default.url")
  val driver2: String = load.getString("db.default.driver")
  val user2: String = load.getString("db.default.user")
  val password2: String = load.getString("db.default.password")

}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值