SparkSQL介绍及使用

1. SparkSQL介绍及使用

在这里插入图片描述

1.1 SparkSQL介绍

Spark SQL是Apache Spark 用于处理结构化数据DataFrameDatasets)的模块。
在Spark1.0版本时引入了Spark SQL。
在这里插入图片描述

1.2 数据结构的形式

  • 结构化数据
    • 表,DataFrame,Datasets
    • 构成
      • 元数据 描述数据的数据(描述信息,类型约束)
      • 数据本身
身高
179
173
170
163
  • 半结构化数据
    • json,xml,有数据的描述信息,但是对数据内容的类型无法约束。
{
    "name":"lxyxp"
}
  • 非结构化数据
    • 文本文件
    • 图片文件
    • 视频文件
    • 音频文件
      总结
  • Spark SQL 可以将非结构化,半结构化数据统一转化为结构化数据处理。
  • Spark中使用的结构化数据有DataFrame,映射表(离线数仓开发使用)。

1.3 Spark SQL 特点

  • 易整合
    • 使用sql配合Spark一起使用,封装了不同语言的DSL方法。
  • 统一数据访问
    • 使用read方法可以读取HDFS数据,MySQL数据,不同类型的文件数据(json、csv、orc)
    • 使用write方法可以写入HDFS、MySQL不同类型的文件
  • 兼容hive
    • 使用Hive SQL方法
  • 标准的数据连接
    • 使用JDBC和ODBC连接方式连接Spark SQL

1.4 Spark SQL 和 Hive SQL关系

  • shark
    • 运行的模式是Hive on Spark
    • 会将Hive SQL 转换为Spark的RDD
    • shark是基于Hive开发的,维护麻烦,2015年停止维护。
  • Spark SQL
    • 是Spark团队独立开发的工具,2014年发布1.0版本。
    • Spark SQL工具对Spark的兼容性更好,优化性能得到提升。
    • Spark SQL本质也是将SQL语句转化为RDD执行,catalyst引擎负责将sql转化为rdd。
    • sparkSQL可以连接使用hive的metastore服务,管理表的元数据。
Spark SQL 中的 Sort-Merge Join 是一种常见的基于磁盘的 join 算法。它利用 Spark 的分布式计算能力和磁盘存储,适用于大规模数据集的 join 操作。下面简单介绍一下如何使用 Spark SQL 中的 Sort-Merge Join。 假设我们有两个数据集,一个是 orders 表,包含订单信息,另一个是 customers 表,包含客户信息。我们想要通过这两个数据集中的共同字段 customer_id 进行 join 操作。 首先,需要将两个数据集分别进行排序,按照 customer_id 字段进行升序排序。可以使用 Spark SQL 中的 sort() 函数进行排序: ```scala val sortedOrders = spark.sql("SELECT * FROM orders ORDER BY customer_id") val sortedCustomers = spark.sql("SELECT * FROM customers ORDER BY customer_id") ``` 接下来,可以使用 Spark SQL 中的 join() 函数进行 join 操作。需要注意的是,join() 函数默认使用的是 Hash Join 算法,需要通过设置参数 spark.sql.join.preferSortMergeJoin=true 来启用 Sort-Merge Join 算法。 ```scala spark.sql("SET spark.sql.join.preferSortMergeJoin=true") val joinedData = sortedOrders.join(sortedCustomers, Seq("customer_id"), "inner") ``` 以上代码中,Seq("customer_id") 指定了 join 操作所使用的共同字段。"inner" 表示使用内连接。 最后,可以对 joinedData 进行操作,例如进行聚合操作: ```scala val result = joinedData.groupBy("customer_id").agg(sum("order_total")) ``` 以上就是使用 Spark SQL 中的 Sort-Merge Join 进行 join 操作的基本步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值