Spark-SQL核心编程

MySQL

Spark SQL 可以通过 JDBC 从关系型数据库中读取数据的方式创建 DataFrame,通过对

DataFrame 一系列的计算后,还可以将数据再写回关系型数据库中。

IDEA通过JDBC对MySQL进行操作:

导入依赖

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.27</version>

</dependency>

MySQL8 <version>8.0.11</version>

读取数据

val sparkConf = new SparkConf().setMaster("local\*").setAppName("SQL")

val spark:SparkSession = SparkSession.builder().config(sparkConf).getOrCreate()

import spark.implicits._

//通用的load方式读取

spark.read.format("jdbc")

.option("url","jdbc:mysql://localhost:3306/system")

.option("driver","com.mysql.jdbc.Driver")//com.mysql.cj.jdbc.Driver

.option("user","root")

.option("password","123456")

.option("dbtable","user")

.load().show()

spark.stop()

//通用的load方法的另一种形式

spark.read.format("jdbc")

.options( Map("url"->"jdbc:mysql://localhost:3306/system?user=root&password=123456","dbtable"->"user","driver"->"com.mysql.jdbc.Driver"))

.load().show()

//通过JDBC

val pros :Properties = new Properties()

pros.setProperty("user","root")

pros.setProperty("password","123456")

val df :DataFrame = spark.read.jdbc("jdbc:mysql://localhost:3306/system","user",pros)

df.show()

写入数据

val sparkConf = new SparkConf().setMaster("local\*").setAppName("SQL")

val spark:SparkSession = SparkSession.builder().config(sparkConf).getOrCreate()

import spark.implicits._

val rdd: RDDStu = spark.sparkContext.makeRDD(List(Stu("lisi", 20),

Stu("zs", 30)))

val ds:DatasetStu = rdd.toDS()

ds.write.format("jdbc")

.option("url","jdbc:mysql://localhost:3306/system")

.option("driver","com.mysql.jdbc.Driver")

.option("user","root")

.option("password","123456")

.option("dbtable","user2")

.mode(SaveMode.Append)

.save()

spark.stop()

Spark-SQL连接Hive

1)内嵌的 HIVE

如果使用 Spark 内嵌的 Hive, 则什么都不用做, 直接使用即可。但是在实际生产活动当中,几乎没有人去使用内嵌Hive这一模式。

2)外部的 HIVE

在虚拟机中下载以下配置文件:

如果想在spark-shell中连接外部已经部署好的 Hive,需要通过以下几个步骤:

➢ Spark 要接管 Hive 需要把 hive-site.xml 拷贝到 conf/目录下,并将url中的localhost改为node01

➢ 把 MySQL 的驱动 copy 到 jars/目录下

➢ 把 core-site.xml 和 hdfs-site.xml 拷贝到 conf/目录下

➢ 重启 spark-shell

3)运行Spark-SQL CLI

Spark SQL CLI 可以很方便的在本地运行 Hive 元数据服务以及从命令行执行查询任务。在 Spark 目录下执行如下命令启动 Spark SQL CLI,直接执行 SQL 语句,类似于 Hive 窗口。

操作步骤:

将mysql的驱动放入jars/当中;

将hive-site.xml文件放入conf/当中;

运行bin/目录下的spark-sql.cmd 或者打开cmd,在

D:\spark\spark-3.0.0-bin-hadoop3.2\bin当中直接运行spark-sql

可以直接运行SQL语句,如下所示:

5)代码操作Hive

  1. 导入依赖。

<dependency>

<groupId>org.apache.spark</groupId>

<artifactId>spark-hive_2.12</artifactId>

<version>3.0.0</version>

</dependency>

<dependency>

<groupId>org.apache.hive</groupId>

<artifactId>hive-exec</artifactId>

<version>2.3.3</version>

</dependency>

  1. 将hive-site.xml 文件拷贝到项目的 resources 目录中。

  2. 代码实现。

val sparkConf = new SparkConf().setMaster("local\*").setAppName("hive")

val spark:SparkSession = SparkSession.builder()

.enableHiveSupport()

.config(sparkConf)

.getOrCreate()

spark.sql("show databases").show()

spark.sql("create database spark_sql")

spark.sql("show databases").show()

spark

相关推荐
xuhaoyu_cpp_java4 小时前
项目学习(三)分页查询
java·经验分享·笔记·学习
Cloud_Shy6187 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第五章 Item 33 - 35)
开发语言·人工智能·笔记·python·学习方法
做cv的小昊8 小时前
计算机图形学:【Games101】学习笔记08——光线追踪(辐射度量学、渲染方程与全局光照、蒙特卡洛积分与路径追踪)
图像处理·笔记·学习·计算机视觉·游戏引擎·图形渲染·概率论
星恒随风8 小时前
C++ 类和对象入门(五):初始化列表、explicit 和 static 成员详解
开发语言·c++·笔记·学习·状态模式
伊布拉西莫12 小时前
【流畅的Python】第20章:并发执行器 — 学习笔记
笔记·python·学习
AOwhisky13 小时前
学习自测与解析:MySQL第五、六、七期核心知识点详解
运维·数据库·笔记·学习·mysql·云计算
niuniuyi~14 小时前
QT学习笔记
笔记·qt·学习
咸甜适中14 小时前
rust语言学习笔记Trait(十六)Error(错误)
笔记·学习·rust
xuhaoyu_cpp_java14 小时前
项目学习(三)代码生成器
java·经验分享·笔记·学习
my_daling15 小时前
松下伺服驱动器参数保存流程(已在松下A5上验证)
笔记