sparkSQL基本使用

Spark SQL 是 Apache Spark 的一个模块,用于处理结构化数据。它允许用户使用 SQL 语言或 DataFrame/Dataset API 来操作数据,并提供了高效的查询优化器和执行引擎。Spark SQL 支持多种数据源,包括 Hive、Parquet、JSON、CSV 等。
以下是 Spark SQL 的基本使用方法,包括启动 Spark SQL、创建 DataFrame、执行 SQL 查询以及保存结果等。
1. 启动 Spark SQL
在使用 Spark SQL 之前,需要创建一个 SparkSession,它是 Spark SQL 的入口点。
示例代码:
scala
复制
import org.apache.spark.sql.
SparkSession

val spark = SparkSession.builder()
  .appName("SparkSQLExample")
  .master("local[*]") // 使用本地模式运行,占用所有可用核心
  .getOrCreate()

import spark.implicits._ // 导入隐式转换,方便使用 DataFrame 的操作
2. 创建 DataFrame
DataFrame 是 Spark SQL 中的核心数据结构,它是一个不可变的分布式数据集合,具有结构化的列和行。
从 JSON 文件创建 DataFrame
scala
复制
val df = spark.read.json("path/to/json/file.json")
df
.show()
从 CSV 文件创建 DataFrame
scala
复制
val df = spark.read.option("header", "true").csv("path/to/csv/file.csv")
df
.show()
从 RDD 创建 DataFrame
scala
复制
val data = Seq((1, "Alice"), (2, "Bob"), (3, "Charlie"))
val rdd = spark.sparkContext.parallelize(data)

val df = rdd.toDF("id", "name")
df
.show()
3. 执行 SQL 查询
要使用 SQL 查询,需要先将 DataFrame 注册为临时视图(Temporary View),然后使用 spark.sql() 方法执行 SQL 查询。
示例代码:
scala
复制
df.createOrReplaceTempView("people")

// 查询所有数据
val result = spark.sql("SELECT * FROM people")
result
.show()

// 查询特定列
val names = spark.sql("SELECT name FROM people")
names
.show()

// 查询条件过滤
val filtered = spark.sql("SELECT * FROM people WHERE id > 1")
filtered
.show()
4. DataFrame 操作
除了 SQL 查询,Spark SQL 也支持 DataFrame API,可以直接对 DataFrame 进行操作。
选择列
scala
复制
df.select("name").show()
过滤数据
scala
复制
df.filter($"id" > 1).show()
添加列
scala
复制
df.withColumn("age", $"id" * 10).show()
分组和聚合
scala
复制
df.groupBy("id").count().show()
5. 保存结果
Spark SQL 支持将查询结果保存到多种格式的文件中,例如 Parquet、CSV、JSON 等。
保存为 CSV 文件
scala
复制
df.write.option("header", "true").csv("path/to/output/csv")
保存为 Parquet 文件
scala
复制
df.write.parquet("path/to/output/parquet")
保存为 JSON 文件
scala
复制
df.write.json("path/to/output/json")
6. 使用 Hive 表
Spark SQL 支持与 Hive 集成,可以直接读取 Hive 表中的数据。
启用 Hive 支持
scala
复制
val spark = SparkSession.builder()
  .appName("HiveExample")
  .master("local[*]")
  .enableHiveSupport() // 启用 Hive 支持
  .getOrCreate()
查询 Hive 表
scala
复制
spark.sql("SELECT * FROM my_hive_table").show()
7. 停止 SparkSession
在完成操作后,需要停止 SparkSession,释放资源。
scala
复制
spark.stop()
总结
Spark SQL 提供了强大的功能,可以使用 SQL 语言或 DataFrame API 来处理结构化数据。通过创建 DataFrame、注册临时视图、执行 SQL 查询以及保存结果,可以高效地完成数据分析任务。此外,Spark SQL 还支持与 Hive 集成,方便读取和写入 Hive 表。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值