【Python3实战Spark大数据分析及调度】第8章 Spark SQL

Spark SQL 前世今生

在这里插入图片描述

Spark SQL是Spark上运行SQL的模块
Hive on Spark是在Hive的基础上添加了Spark的执行引擎
两者是不同的
metastore,元数据,比如表的名字、表存在的位置、有哪些字段、顺序类型等等。存储在MySQL里面。好处是在Hive创建了表,Spark SQL可以访问,反之亦然,因为创建都是独立的。
在这里插入图片描述

Spark SQL 概述

Spark SQL是Spark中用来处理结构化数据的一个模块。

  1. 集成的
    能够使用SQL或者Dataframe API 查询结构化数据。
    在这里插入图片描述
  2. 统一的数据访问
    能够使用相同的方式连接任何的数据源。
    Dataframe 和 SQL 提供了能够连接数据源的共同方式。包含(Hive,Avro,Parquet,ORC,JSON和JDBC等)
    在这里插入图片描述
  3. 能够很好地与Hive进行集成
    在已经存在的数据仓库中执行 SQL 和 HQL的查询。
    在这里插入图片描述
  4. 标准的 Connectivity
    通过 JDBC 或者 ODBC来连接 BI 工具
    在这里插入图片描述
    Hive、Spark SQL 都不仅仅是SQL
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Spark SQL 架构

其中前端是sql语言或者spark program代码或者Streaming SQL,通过Catalyst进行优化和转换,传给后端Spark引擎进行运算。
SQL =》 抽象语法树 =》 逻辑执行计划 =》 优化后的逻辑执行计划 =》 物理执行计划 =》 优化后的物理执行计划 =》 Spark引擎
在这里插入图片描述

Dataframe / Dataset 详解

pandas 和 R 中的 Dataframe 是单机版,而 Spark SQL 中的 Dataframe 是分布式的,区别就在这里。

Dataset 是一个分布式的数据的集合,在Spark1.6中添加。Python不支持Dataset API。仅仅支持 Scala 和 Java。

Dataframe 是以列的形式构成分布式数据集,和关系型数据库的表类似
在这里插入图片描述
在这里插入图片描述

Spark SQL 编程

Spark SQL 的入口是 SparkSession

在这里插入图片描述
从已有的数据源创建 Dataframe
查看 Dataframe 的信息
在这里插入图片描述

在这里插入图片描述
df select 可以选择多个列,然后用show进行展示
在这里插入图片描述
在这里插入图片描述
还可以像pandas中一样用 df[‘name’]的方式访问列
在这里插入图片描述
filter 和 groupby 函数
在这里插入图片描述
注册临时表,并使用SQL语句进行查询
在这里插入图片描述
创建全局视图,用的不是很多
需要加上global_temp标识
在这里插入图片描述

Dataframe 与RDD进行转换

  1. 使用反射机制,推导出数据类型
  2. 编程指定Schema
    在这里插入图片描述
    1中方式,以后编程按照模板写就行了
    在这里插入图片描述

2中方式
在这里插入图片描述
比较来说是第二种比较灵活,但是代码量稍多,推荐第二种

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值