oracle转sparksql工具化,SparkSQL读取Oracle数据到kafka中

import java.util.Properties

import org.apache.spark.SparkConf

import org.apache.spark.broadcast.Broadcast

import org.apache.spark.sql.{DataFrame, SparkSession}

object Conn_Oracle {

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

//Spark 连接Oracle数据库

//获取sparkConf

val conf = new SparkConf()

.setMaster("local[*]")

.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")

.setAppName(this.getClass.getName)

//获取sparksesssion

val session = SparkSession

.builder()

.config(conf)

.getOrCreate()

val sc = session.sparkContext

// --------------------------------连接oracle数据库 ----------------------------------

val reader = session.read.format("jdbc")

.option("url", "jdbc:oracle:thin:@10.10.1.253:1521:bidwdev")

.option("driver", "oracle.jdbc.driver.OracleDriver")

.option("user", "user")

.option("password", "password")

.option("dbtable", "表名字")

val jdbcDf: DataFrame = reader.load()

jdbcDf.show()

//----------------------------------广播变量------------------------------------------------

val kafkaProducer:Broadcast[KafkaSink[String,String]]={

val kafkaProducerConfig={

val p=new Properties()

p.setProperty("bootstrap.servers","10.133.232.57:9092")

// p.setProperty("zookeeper.connect","10.133.232.57:9093")

p.setProperty("key.serializer","org.apache.kafka.common.serialization.StringSerializer")

p.setProperty("value.serializer","org.apache.kafka.common.serialization.StringSerializer")

// p.setProperty("partitioner.class","com.buba.kafka.producer.CustomPartitioner")

p.put("acks", "all")

p.put("retries", "0")

p.put("delivery.timeout.ms","30001")

p.put("request.timeout.ms","30000")

// 请求延时

p.put("linger.ms", "1")

p

}

sc.broadcast(KafkaSink[String,String](kafkaProducerConfig))

}

//将读取的接收到的数据广播分发到Oracle_test这个topic中

jdbcDf.foreachPartition(rdd=>{

rdd.foreach(row => {

kafkaProducer.value.send("Oracle_test", row.toString)

})

})

// jdbcDf.show()

sc.stop()

session.stop()

}

}

f615d34ff84d087368c54e19bcd26578.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值