Spark-SQL3

发布于:2025-04-17 ⋅ 阅读:(56) ⋅ 点赞:(0)

数据加载与保存:

加载数据的方法
选项参数:可以通过选项参数传入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语句)。
保存数据:选择保存模式并保存数据。

Spark-SQL连接Hive

使用方式分为内嵌Hive、外部Hive、Spark-SQL CLI、Spark beeline 以及代码操作。

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 beeline(了解)

如果想连接 Thrift Server,需要通过以下几个步骤:

 Spark 要接管 Hive 需要把 hive-site.xml 拷贝到 conf/目录下

 把 Mysql 的驱动 copy 到 jars/目录下

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

 启动 Thrift Server

 使用 beeline 连接 Thrift Server

4.运行Spark-SQL CLI
  1. 将mysql的驱动放入jars/当中;
  2. 将hive-site.xml文件放入conf/当中;
  3. 运行bin/目录下的spark-sql.cmd 或者打开cmd,在D:\spark\spark-3.0.0-bin-hadoop3.2\bin当中直接运行spark-s
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>

可能出现下载jar包的问题:

D:\maven\repository\org\pentaho\pentaho-aggdesigner-algorithm\5.1.5-jhyde

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

3. 代码实现。

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

注意:

1.如果在执行操作时,出现如下错误:

可以在代码最前面增加如下代码解决:

System.setProperty("HADOOP_USER_NAME", "node01")

此处的 node01 改为自己的 hadoop 用户名称

2.在开发工具中创建数据库默认是在本地仓库,通过参数修改数据库仓库的地址: config("spark.sql.warehouse.dir", "hdfs://node01:9000/user/hive/warehouse")


网站公告

今日签到

点亮在社区的每一天
去签到