Spark-SQL核心编程

一、数据加载与保存通用方式

1. 加载数据

通用方法: spark.read.load ,支持通过 format 指定数据格式, option 设置参数, load 指定路径

简化查询:可直接对文件执行SQL查询,如 spark.sql("select * from json.'文件路径'") 。

2. 保存数据

通用方法: df.write.save ,通过 format 指定格式, option 设置参数(如JDBC连接信息), save 指定路径。

保存模式(SaveMode):

模式说明 

ErrorIfExists 存在则报错(默认) 

Append 存在则追加 

Overwrite 存在则覆盖 

Ignore 存在则忽略 

二、特定格式数据处理

1. Parquet

默认格式:Spark SQL默认数据源,无需显式指定 format 。

加载: spark.read.load("parquet文件路径") 。

保存: df.write.mode("append").save("保存路径") (自动以Parquet格式保存)。

2. JSON

加载: spark.read.json("json文件路径") ,要求每行是独立JSON串,自动推断Schema生成 Dataset[Row] 。

scala

val peopleDF = spark.read.json("people.json")  

peopleDF.createOrReplaceTempView("people")  

spark.sql("SELECT name FROM people WHERE age BETWEEN 13 AND 19").show()  

3. CSV

配置参数:支持设置分隔符( sep )、推断Schema( inferSchema=true )、表头( header=true )等。

4. MySQL(JDBC)

依赖:需导入MySQL驱动(如 mysql-connector-java ,5.x或8.x版本)。

写入数据:通过 mode(SaveMode) 指定保存策略,如追加模式 mode(SaveMode.Append) 。

Spark-SQL连接Hive的方式

1. 内嵌Hive

特点:无需额外配置,直接使用,但生产环境不常用。

2. 外部Hive

配置步骤:

将 hive-site.xml (修改 ConnectionURL 为实际Hive元数据库地址)、 core-site.xml 、 hdfs-site.xml 拷贝到Spark的 conf/ 目录。

将MySQL驱动(如 mysql-connector-java.jar )放入Spark的 jars/ 目录。

重启 spark-shell ,通过 spark.sql("show tables") 验证。

3. Spark beeline

用途:通过Hive的beeline工具访问Spark Thrift Server(兼容HiveServer2协议)。

步骤:同外部Hive配置,启动Thrift Server后,使用 beeline -u jdbc:hive2://node01:10000 -n root 连接。

4. Spark-SQL CLI

操作:在Spark目录下运行 spark-sql 命令,直接执行HQL语句(需提前配置驱动和 hive-site.xml )。

5. 代码操作Hive

依赖:添加 spark-hive_2.12 和 hive-exec 依赖。

配置:将 hive-site.xml 放入项目 resources 目录,启用Hive支持

注意事项:

权限问题:通过 System.setProperty("HADOOP_USER_NAME", "用户名") 设置Hadoop用户。

仓库地址:通过 config("spark.sql.warehouse.dir", "HDFS路径") 指定Hive仓库位置。

核心总结

数据交互:Spark-SQL支持多种数据源(文件、数据库、Hive),通过统一的 read/write 接口和格式参数实现通用操作。

 Hive集成:通过配置文件和依赖,Spark-SQL可无缝连接外部Hive,支持SQL查询、元数据管理等功能,满足复杂数据处理需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值