spark-SQL

数据的加载与保存

加载数据的方法

选项参数:可以通过选项参数传入URL地址、用户名、密码和数据表名称等。

路径参数:可以传入加载数据的路径。

MySQL语句:可以直接导入MySQL语句来加载数据。
保存数据的方法

通用方法:使用df.write方法保存数据。

格式和选项:可以指定保存的数据格式和选项参数。

保存模式:可以选择不同的保存模式(如追加、覆盖、忽略、报错)。

数据源格式

默认数据源格式:Spark SQL默认使用一种能够存储嵌套数据的格式,不需要指定格式。

具体数据加载和查询
JSON数据

加载JSON文件:使用spark.read.json方法加载JSON文件。

val path = "/opt/module/spark-local/people.json"

val peopleDF = spark.read.json(path)

查询数据:可以通过SQL语句查询JSON数据。

val resDF = spark.sql("SELECT name FROM people WHERE age BETWEEN 13 AND 19")
CSV数据

加载CSV文件:可以配置CSV文件的列表信息并读取CSV文件。

注意事项:CSV文件的第一行通常设置为数据列信息。
MySQL数据

连接MySQL:通过JDBC从关系型数据库中读取数据。

版本匹配:确保Spark和MySQL的驱动版本匹配。

加载数据:使用spark.read.format("jdbc")方法加载MySQL数据。

写入数据:使用df.write.format("jdbc")方法将数据写入MySQL。

具体操作步骤

导入依赖:确保导入所需的依赖包。

配置对象:创建配置对象并设置相关参数。

加载数据:使用不同的方法加载数据(如选项参数、路径参数、MySQL语句)。

保存数据:选择保存模式并保存数据。

IDEA通过JDBC对MySQL进行操作:

读取数据

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: RDD[Stu] = spark.sparkContext.makeRDD(List(Stu("lisi", 20),

Stu("zs", 30)))

val ds:Dataset[Stu] = 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()

MySQL和Spark Circle的连接

版本兼容性:

MySQL的不同版本(如5.x和8.x)需要对应版本的驱动。

Spark Circle在编译时可以包含或不包含Hive支持。

连接方式:

内嵌Hive:无需额外配置,直接使用。

外部Hive:需要下载配置文件(PSML、CORE-SML、HDFS),并将这些文件放在Spark目录下。

修改配置文件:将hive-site.xml中的本地文件路径改为虚拟机中的Hive路径(如note01)。

复制MySQL驱动:将MySQL驱动复制到Spark目录下。

启动Spark Shell:

可以通过CMD或双击B目录下的CMD文件启动。

在Spark Shell中输入SQL语句可以查看数据库和数据表。

Spark Circle CLI:

运行spark-shell命令启动。

直接输入MySQL语句,无需加SQL括号和双引号。

IDEA与Hive的连接

导入依赖:

需要导入与Spark版本一致的依赖包(如3.0.0版本)。

确保Hive版本与Spark版本一致。

环境配置:

虚拟机必须运行,因为使用的是虚拟机中的Hive。

将配置文件和驱动放在指定目录下。

代码实现:

导入必要的包。

创建配置对象和Hive对象。

输入Hive语句,如展示所有数据表和数据库。

常见错误:

确保所有配置文件和驱动正确放置。

检查版本兼容性。

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

相关推荐
证榜样呀1 小时前
2026 中专大数据技术专业可考的证书有哪些,必看!
大数据·sql
Codefengfeng1 小时前
数据安全知识点速通
sql
鸿乃江边鸟2 小时前
Spark Datafusion Comet 向量化Rust Native--CometShuffleExchangeExec怎么控制读写
大数据·rust·spark·native
逍遥德3 小时前
Sring事务详解之02.如何使用编程式事务?
java·服务器·数据库·后端·sql·spring
驾数者3 小时前
Flink SQL实时数仓实战:基于Flink SQL的完整项目案例
sql·flink·linq
·云扬·14 小时前
MySQL Binlog落盘机制深度解析:性能与安全性的平衡艺术
android·mysql·adb
天马379814 小时前
MySql9 免安装版_配置和启动_MySql9安装
adb·mysql9 免安装版·mysql9安装
此刻你15 小时前
常用的 SQL 语句
数据库·sql·oracle
·云扬·16 小时前
MySQL Binlog 配置指南与核心作用解析
数据库·mysql·adb