Spark SQL数据源:JDBC

这篇具有很好参考价值的文章主要介绍了Spark SQL数据源:JDBC。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


Spark SQL数据源:JDBC

一、Spark SQL读取关系数据库

Spark SQL还可以使用JDBC API从其他关系型数据库读取数据,返回的结果仍然是一个DataFrame,可以很容易地在Spark SQL中处理,或者与其他数据源进行连接查询。

二、Spark SQL JDBC连接属性

在使用JDBC连接数据库时可以指定相应的连接属性

属性 介绍
url 连接的JDBC URL
driver JDBC驱动的类名
user 数据库用户名
password 数据库密码
dbtable 数据库表名或能代表一张数据库表的子查询。在读取数据时,若只使用数据库表名,则将查询整张表的数据;若希望查询部分数据或多表关联查询,则可以使用SQL查询的FROM子句中有效的任何内容,例如放入括号中的子查询。该属性的值会被当作一张表进行查询,查询格式:select * from <dbtable属性值> where 1 = 1。注意,不允许同时指定dbtable和query属性。
query 指定查询的SQL语句。注意:不允许同时指定dbtable和query属性,也不允许同时指定query和partitionColumn属性。当需要指定partitionColumn属性时,可以使用dbtable属性指定子查询,并使用子查询的别名对分区列进行限定。
partitionColumn
lowerBound
upperBound
这几个属性,若有一个被指定,则必须全部指定,且必须指定numPartitions属性。它们描述了如何在从多个Worker中并行读取数据时对表进行分区。partitionColumn必须是表中的数字、日期或时间戳列。注意,lowerBound 和upperBound只是用来决定分区跨度的,而不是用来过滤表中的行。因此,表中的所有行都将被分区并返回。
numPartitions 对表并行读写数据时的最大分区数,这也决定了并发JDBC连接的最大数量。如果要写入数据的分区数量超过了此限制的值,那么在写入之前可以调用coalesce(numpartition)将分区数量减少到此限制的值。

三、创建数据库与表

(一)创建数据库

创建数据库spark_db
Spark SQL数据源:JDBC
Spark SQL数据源:JDBC

(二)创建学生表

创建表student,执行命令:

CREATE TABLE student (id INT, name VARCHAR(10), gender VARCHAR(2), age INT);

Spark SQL数据源:JDBC
给student表插入几条记录
Spark SQL数据源:JDBC

INSERT INTO student VALUES (1, '李文君', '女', 18);
INSERT INTO student VALUES (2, '唐玉龙', '男', 19);
INSERT INTO student VALUES (3, '陈燕文', '女', 20);
INSERT INTO student VALUES (4, '洪小刚', '男', 18);
INSERT INTO student VALUES (5, '郑小翠', '女', 19);

(二)创建成绩表

创建表student,执行命令:

CREATE TABLE score (id INT, name VARCHAR(10), score REAL);

Spark SQL数据源:JDBC
给score表插入几条记录
Spark SQL数据源:JDBC

INSERT INTO score VALUES (1, '张三', 87);
INSERT INTO score VALUES (1, '李四', 97);
INSERT INTO score VALUES (1, '王五', 92);
INSERT INTO score VALUES (1, '李宇春', 67);
INSERT INTO score VALUES (1, '张俊峰', 57);

四、读取和写入数据库表

启动Spark Shell,执行命令:spark-shell
Spark SQL数据源:JDBC

(一)利用dbtable属性读取数据表

读取student表

val studentDF = spark.read.format("jdbc")
  .option("url", "jdbc:mysql://master:3306/spark_db?useSSL=false")     
  .option("driver","com.mysql.jdbc.Driver")  
  .option("dbtable", "student")  
  .option("user", "root")  
  .option("password", "LZYp@ssw0rd")  
  .load()

执行上述命令
Spark SQL数据源:JDBC
执行命令:studentDF.show()
Spark SQL数据源:JDBC

(二)利用dbtable属性读取数据表查询

读取student与score关联查询结果

val resultDF = spark.read.format("jdbc")
  .option("url", "jdbc:mysql://master:3306/spark_db?useSSL=false")     
  .option("driver","com.mysql.jdbc.Driver")  
  .option("dbtable", "(select st.id, st.name, gender, age, score from student st inner join score sc on st.id = sc.id) t")  
  .option("user", "root")  
  .option("password", "LZYp@ssw0rd")  
  .load()

执行上述命令(dbtable属性的值是一个子查询,相当于SQL查询中的FROM关键字后的一部分)
Spark SQL数据源:JDBC
查看结果数据帧内容,执行命令:resultDF.show()
Spark SQL数据源:JDBC

将数据帧内容以json格式写入HDFS的/out目录
import org.apache.spark.sql.SaveMode
resultDF.write.mode(SaveMode.Overwrite).format(“json”).save(“hdfs://master:9000/out”)

Spark SQL数据源:JDBC
在master虚拟机上查看生成的json文件
Spark SQL数据源:JDBC

(三)将数据帧内容写入数据表

将数据帧内容以jdbc格式写入数据库spark_db的test表

resultDF.write.mode(SaveMode.Overwrite).format("jdbc")
  .option("url", "jdbc:mysql://master:3306/spark_db?useSSL=false")     
  .option("dbtable", "test")
  .option("user", "root")
  .option("password", "LZYp@ssw0rd")
  .save()

执行上述命令
Spark SQL数据源:JDBC
在Navicat里查看生成的test表
Spark SQL数据源:JDBC

(四)利用query属性读取数据表查询

注意:Spark 2.4.0开始的Spark SQL的JDBC属性里才有query属性。

读取student与score关联查询结果

val resultDF = spark.read.format("jdbc")
  .option("url", "jdbc:mysql://master:3306/spark_db?useSSL=false")     
  .option("driver","com.mysql.jdbc.Driver")  
  .option("query", "select st.name, st.gender, sc.score from student st inner join score sc on st.id = sc.id")  
  .option("user", "root")  
  .option("password", "LZYp@ssw0rd")  
  .load()

执行上述命令
Spark SQL数据源:JDBC
执行命令:resultDF.show()
Spark SQL数据源:JDBC文章来源地址https://www.toymoban.com/news/detail-488490.html

到了这里,关于Spark SQL数据源:JDBC的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 4.2 Spark SQL数据源 - 基本操作

    案例演示读取Parquet文件 查看Spark的样例数据文件users.parquet 1、在Spark Shell中演示 启动Spark Shell 查看数据帧内容 查看数据帧模式 对数据帧指定列进行查询,查询结果依然是数据帧,然后通过write成员的save()方法写入HDFS指定目录 查看HDFS上的输出结果 执行SQL查询 查看HDFS上的输

    2024年02月08日
    浏览(31)
  • Spark大数据处理讲课笔记4.2 Spark SQL数据源 - 基本操作

      目录 零、本讲学习目标 一、基本操作 二、默认数据源 (一)默认数据源Parquet (二)案例演示读取Parquet文件 1、在Spark Shell中演示 2、通过Scala程序演示 三、手动指定数据源 (一)format()与option()方法概述 (二)案例演示读取不同数据源 1、读取房源csv文件 2、读取json,保

    2024年02月09日
    浏览(32)
  • Spark数据源educoder

    第1关:SparkSQL加载和保存         在右侧编辑器补充代码,加载 people.json 文件,以覆盖的方式保存到 people 路径里,继续加载 people1.json 文件,以附加的方式保存到 people 路径里,最后以表格形式显示 people 里前 20 行 Dataset 。

    2024年02月04日
    浏览(37)
  • flink执行环境和读取kafka以及自定义数据源操作

    目录 创建执行环境 1. getExecutionEnvironment 2. createLocalEnvironment 3. createRemoteEnvironment  执行模式(Execution Mode) 1. BATCH 模式的配置方法 2. 什么时候选择 BATCH 模式 触发程序执行 数据源操作 读取kafka数据源操作  自定义Source           编 写 Flink 程 序 的 第 一 步 , 就 是 创 建 执

    2023年04月10日
    浏览(29)
  • Flink读取数据的5种方式(文件,Socket,Kafka,MySQL,自定义数据源)

    这是最简单的数据读取方式。当需要进行功能测试时,可以将数据保存在文件中,读取后验证流处理的逻辑是否符合预期。 程序代码: 输出结果 用于验证一些通过Socket传输数据的场景非常方便。 程序代码: 测试时,需要先在 172.16.3.6 的服务器上启动 nc ,然后再启动Flink读

    2024年02月16日
    浏览(34)
  • 「数据库、数据库连接池、数据源」这些概念你真的理解了吗?

    我学习的过程中,对于连接池和数据源分得不是很清楚,而且我发现有的人将数据库等同于数据源,或者将数据源等同于连接池,实际上这些说法并不准确。 在某次工作中,同事 A 说道,这个数据源不行,那么换一个数据源就可以了,结果我看他操作,原来是改写了配置中的

    2023年04月21日
    浏览(51)
  • 【精·超详细】SpringBoot 配置多个数据源(连接多个数据库)

    目录 1.项目路径 2.pom.xml  引入依赖: 3.application.yml配置文件: 4.两个entity类 5.Conroller 6.两个Service以及两个ServiceImpl  7.两个Mapper及两个Mapper.xml  8.运行Application  然后在浏览器请求 9.查看两个数据库是否有新增数据           总结: 1.pom.xml 引入依赖: dynamic-datasource-spring-b

    2024年02月12日
    浏览(52)
  • spark DStream从不同数据源采集数据(RDD 队列、文件、diy 采集器、kafka)(scala 编程)

    目录 1. RDD队列 2 textFileStream 3 DIY采集器 4 kafka数据源【重点】        a、使用场景:测试        b、实现方式: 通过ssc.queueStream(queueOfRDDs)创建DStream,每一个推送这个队列的RDD,都会作为一个DStream处理     1. 自定义采集器     2. 什么情况下需要自定采集器呢?          比

    2024年02月07日
    浏览(41)
  • ODBC 配置数据源(SQL server)

    1、在控制面板管理工具中找到\\\"数据源ODBC\\\",并启动。 2、点击添加 3、选中 sqlserver 4、填写服务器地址 5、填写登陆账号、密码 6、选择默认连接的数据库 7、配置完成,可以测试连接

    2024年02月07日
    浏览(29)
  • SpringBoot整合(五)HikariCP、Druid数据库连接池—多数据源配置

    在项目中,数据库连接池基本是必不可少的组件。在目前数据库连接池的选型中,主要是 Druid ,为 监控 而生的数据库连接池。 HikariCP ,号称 性能 最好的数据库连接池。 在Spring Boot 2.X 版本,默认采用 HikariCP 连接池。而阿里大规模采用 Druid 。下面介绍在SpringBoot中使用Hika

    2024年02月17日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包