Spark读取MySQL数据

import java.util.{Properties, UUID} import org.apache.spark.sql.{SaveMode, SparkSession} import org.apache.spark.SparkConf object SparkReadMySQL { def main(args:Array[String]):Unit = { val appNameSuffix = UUID.randomUUID() val config = new SparkConf().setMaster("local[*]").setAppName("SparkReadMySQL_"+appNameSuffix) val spark = SparkSession.builder.config(config).getOrCreate() import spark.implicits._ val jdbcUrl = "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false" def dbConnProperties(user:String, pass:String):Properties = { val ConnProperties = new Properties(); ConnProperties.put("driver", "com.mysql.jdbc.Driver"); ConnProperties.put("user", user); ConnProperties.put("password", pass); ConnProperties.put("fetchsize", "1000"); //读取条数限制 ConnProperties.put("batchsize", "10000"); //写入条数限制 return ConnProperties; } val dbUser = "root" val dbPass = "123456" val readConnProperties = dbConnProperties(dbUser,dbPass); val sql = "select a.* ,b.week from dm_raw_data a left join dm_week_alignment b on a.day = b.day where b.week between '20180901' and '20180902'" val df = spark.read.jdbc(jdbcUrl, s"(${sql}) t",readConnProperties) // 显示前100行 df.show(100) val toPath = "/data1/tmp" //合并为一个文件输出 df.coalesce(1).write.format("csv").option("charset","utf-8").option("delimiter", ',') .mode(SaveMode.Append).save(toPath) //直接输出 df.write.format("csv").option("charset","utf-8").option("delimiter", ',') .mode(SaveMode.Append).save(toPath) spark.stop() } }

参考:https://my.oschina.net/k8king/blog/2876556

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值