大数据全系列 教程
1869个小节阅读:467.7k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
Spark SQL可以通过JDBC从关系型数据库中读取数据的方式创建DataFrame.
读取JDBC是需要有驱动的,我们读取的是jdbc∶mysq∶//ip:3306
这个协议,也就是读取的是mysql的数据。需要有mysql的驱动jar包给spark程序用,如果不给驱动jar包,会提示∶ No Suitable Driver
驱动包在软件中∶mysql-connector-java-5.1.37.jar
xxxxxxxxxx
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.37</version>
</dependency>
/opt/spark-3.2.1/jars
代码演示:
xxxxxxxxxx
package com.itbaizhan.sql
import org.apache.spark.SparkConf
import org.apache.spark.sql.{DataFrame, SparkSession}
import java.util.Properties
object SSJdbcRead {
def main(args: Array[String]): Unit = {
//1创建上下文环境配置对象
val conf: SparkConf = new SparkConf()
.setMaster("local[*]")
.setAppName("jdbcRead")
//2.创建执行环境入口对象SparkSession对象
val spark: SparkSession = SparkSession.builder()
.config(conf).getOrCreate()
// 3.方式一:通过jdbc读取mysql数据库test中的my_score
//3.1.option("url", "jdbc连接的url字符串")
//dbc:mysql://192.168.20.101:3306/test? => jdbc:mysql://ip:port/dbname?
//useSSL=false 是否使用SSL安全协议进行连接 false表示不使用,true表示使用
//&useUnicode=true&characterEncoding=utf8传输数据使用字符集
//编码,确保数据在传输过程中不出现乱码问题
// 3.2.option("dbtable", "my_score")设置操作的表名称
// 3.3.option("user", "root") 连接mysql数据库的用户名
// 3.4.option("password", "123456") 连接mysql数据库的密码
// 3.5.load() 无参数 不需要指定具体的路径
/*val df: DataFrame = spark.read.format("jdbc")
.option("url", "jdbc:mysql://node1:3306/test?useSSL=false&useUnicode=true&characterEncoding=utf8")
.option("driver", "com.mysql.jdbc.Driver")
.option("user", "root")
.option("password", "123456")
.option("dbtable", "my_score")
.load()*/
//4.方式二
val prop: Properties = new Properties()
prop.put("user", "root")
prop.put("password", "123456")
prop.put("driver", "com.mysql.jdbc.Driver")
val df: DataFrame = spark.read.jdbc("jdbc:mysql://node1:3306/test?useSSL=false&useUnicode=true&characterEncoding=utf8",
"my_score", prop)
df.printSchema()
df.show()
spark.stop()
}
}
更多内容参考https://spark.apache.org/docs/latest/sql-data-sources-jdbc.html
实时效果反馈
1. 以下选项中哪个是指定操作的表?
A option("url", "jdbc:mysql://node1:3306/test?useSSL=false&useUnicode=true&characterEncoding=utf8")
。
B option("dbtable", "my_score")
。
C option("user", "root")
。
D option("password", "123456")
。
答案:
1=>B。