Spark insertOrUpdate MySQL数据

需求:使用 Spark 将 Hive 数据同步到 MySQL,MySQL表以其中三个字段作为唯一索引,索引不冲突的数据直接写入,冲突的数据对其中几个字段进行更新。

主类

import java.util.Properties

import com.sm.conf.ConfigManager
import com.sm.constants.Constants
import com.sm.utils.{DateUtils, MySQLUtils}
import org.apache.log4j.Level
import org.apache.spark.sql.{SaveMode, SparkSession}
import org.slf4j.LoggerFactory

/**
  * 同步 Hive dws payment及sv_key retained 数据到MySQL
  *
  * create by LiuJinHe 2020/4/1
  */
object ExportPayRetainedToMysql {
  private val warehouseLocation = "hdfs://cdh-slave01:9870/user/hive/warehouse"
  private var prop: Properties = _
  private var hiveDB: String = _
  private var database: String = _
  private var url: String = _
  private var hiveTable: String = _
  private var destTable: String = _
  private var logger: org.slf4j.Logger = _
  private var yesterday: String = _
  private var start: Long = 0L
  private var sqlStr: String = _

  def main(args: Array[String]): Unit = {
    logger = LoggerFactory.getLogger(this.getClass)
    org.apache.log4j.Logger.getLogger("org.apache.hadoop").setLevel(Level.WARN)
    org.apache.log4j.Logger.getLogger("org.apache.spark").setLevel(Level.INFO)
    org.apache.log4j.Logger.getLogger("org.spark_project.jetty").setLevel(Level.WARN)

    val spark = initSparkSession
    start = System.currentTimeMillis()

    // 拉取数据日期,格式为2020-01-01,默认为前一天
    yesterday = DateUtils.getYesterdayDate

    if (args.length == 1) {
      yesterday = args(0)
    }

    pro
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

訾零

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值