SparkSQL之RDD丶DataFrame丶DataSet介绍

1. 首先什么是SparkSQL?

  • Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用。
  • 有多种方式去使用Spark SQL,包括SQL、DataFrames API和Datasets API。但无论是哪种API或者是编程语言,它们都是基于同样的执行引擎
  • 它是将Spark SQL转换成RDD,然后提交到集群中去运行,执行效率非常快!

2. SparkSQL的几大特性:

  • 易整合: 将sql查询与spark程序无缝混合,可以使用java、scala、python、R等语言的API操作。
    在这里插入图片描述
  • 统一的数据访问: 以相同的方式连接到任何数据源。
    在这里插入图片描述
  • 兼容Hive: 支持Hive HQL的语法,兼容hive(元数据库、SQL语法、UDF、序列化、反序列化机制)。
    在这里插入图片描述
  • 标准的数据连接: 可以使用行业标准的JDBC或ODBC连接。

在这里插入图片描述

SparkSQL模块官方文档

3. SparkSQL的概述

简介:Spark SQL允许开发人员直接处理RDD,同时可以查询在Hive上存储的外部数据。Spark SQL的一个重要特点就是能够统一处理关系表和RDD,使得开发人员可以轻松的使用SQL命令进行外部查询,同时进行更加复杂的数据分析

发展历程:
在这里插入图片描述

关系:
在这里插入图片描述
SparkSQL发展:

  • 1-Hive(慢-底层基于MapReduce-Tez-Spark)
  • 2-Shark(底层执行引擎Spark,大量冗余的Hive代码)
  • 3-SparkSQL(重新设计了SQL的执行流程,200种优化)
  • Spark3.0中有大量SQL的改变
3.1 DataFrame

在这里插入图片描述

  • 总结:
    DataFrame ==> RDD - 泛型 + Schema + 方便的SQL操作 + 优化
    DataFrame是特殊的RDD
    DataFrame是一个分布式的表
3.2 DataSet

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

● 总结:
Dateset ==> DataFrame + 泛型
Dateset ==> RDD + Schema + 方便的SQL操作 + 优化
Dateset是特殊的DataFrame、DataFrame是特殊的RDD
Dateset是一个分布式的表

3.3 RDD、DataFrame、DataSet的区别
  • 三者结构图解
    LmNzZG4ubmV0L20wXzQ5ODM0NzA1,size_16,color_FFFFFF,t_70)

  • 数据图解
    1) 假设RDD中的两行数据长这样:

    • 总结:
  1. DataFrame = RDD - 泛型 + Schema + SQL + 优化
  2. DataSet = DataFrame + 泛型
  3. DataSet = RDD + Schema + SQL + 优化
  4. DataFrame = DataSet[Row]

4. SparkSQL与HiveSQL的关系

  • Hive(SQL on Hadoop)是大数据生态系统中第一个SQL框架,架构如下所示:
    在这里插入图片描述
    底层依赖的MapReduce 所以计算起来很慢

  • Shark(Hive on Spark),把HQL翻译成Spark上对应的RDD操作,Shark继承了大量的Hive代码在这里插入图片描述

  • 基于前面的问题诞生了SparkSQL(新的技术都是基于就得技术有问题才诞生的)
    在这里插入图片描述
    在这里插入图片描述
    数据结构: DataFrame和DataSet

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值