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: 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()

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 窗口。

相关推荐
对空六课8 小时前
埋点上报太频繁拖性能,先做批量合并和时机控制
sql·工具选型·数据上报·埋点方案·sdk接入
java_nnnn9 小时前
Spring IoC & DI 从入门到理解:控制反转、依赖注入与 Bean 管理详解
数据库·sql·spring
lqbzlll10 小时前
MySQL 慢查询日志开了但看不懂?从 slow_query_log 到 EXPLAIN ANALYZE 一步步定位
数据库·mysql·adb
code_slave(码畜)10 小时前
微服务架构落地:慢 SQL 治理与连接池调优 —— 守住数据库的最后一道防线
数据库·spring boot·sql·spring cloud·微服务·架构
风翼靓崽12 小时前
centos7以mysql为例自建yum源
数据库·mysql·adb
码农阿豪12 小时前
MongoDB迁移到金仓数据库:商品属性继续灵活存,订单报表交给 SQL
数据库·sql·mongodb
秋名RG12 小时前
一条 SQL 语句在 MySQL 中的执行过程详解
数据库·sql·mysql
smilejingwei1 天前
TRAE 插件上新 | SQLazy:让 AI 写出可信复杂 SQL
数据库·人工智能·sql