Spark SQL概述

Spark SQL官方介绍

  • 官网 :http://spark.apache.org/sql/
    在这里插入图片描述
  • Spark SQL是Spark用来处理结构化数据的一个模块。
  • Spark SQL还提供了多种使用方式,包括DataFrames APIDatasets API。但无论是哪种API或者是编程语言,它们都是基于同样的执行引擎,因此你可以在不同的API之间随意切换,它们各有各的特点。

Spark SQL 的特点

  1. 易整合
    可以使用java、scala、python、R等语言的API操作。

  2. 统一的数据访问
    连接到任何数据源的方式相同。

  3. 兼容Hive
    支持hiveHQL的语法。
    兼容hive(元数据库、SQL语法、UDF、序列化、反序列化机制)

  4. 标准的数据连接
    可以使用行业标准的JDBC或ODBC连接。

SQL优缺点

  • SQL的优点
    表达非常清晰, 比如说这段 SQL 明显就是为了查询三个字段,条件是查询年龄大于 10 岁的
    难度低、易学习。
  • SQL的缺点
    复杂分析,SQL嵌套较多:试想一下3层嵌套的 SQL维护起来应该挺力不从心的吧
    机器学习较难:试想一下如果使用SQL来实现机器学习算法也挺为难的吧

Hive和SparkSQL

  • Hive是将SQL转为MapReduce
  • SparkSQL可以理解成是将SQL解析成’RDD’ + 优化再执行

在这里插入图片描述

1、Spark SQL数据抽象

1.1、DataFrame

  • 什么是DataFrame
    DataFrame是一种以RDD为基础的带有Schema元信息的分布式数据集,类似于传统数据库的二维表格 。
    在这里插入图片描述

1.2、 DataSet

  • 什么是DataSet
    DataSet是保存了更多的描述信息,类型信息的分布式数据集。
    与RDD相比,保存了更多的描述信息,概念上等同于关系型数据库中的二维表。
    与DataFrame相比,保存了类型信息,是强类型的,提供了编译时类型检查,
    调用Dataset的方法先会生成逻辑计划,然后被spark的优化器进行优化,最终生成物理计划,然后提交到集群中运行!
    在这里插入图片描述
    DataSet包含了DataFrame的功能,
    Spark2.0中两者统一,DataFrame表示为DataSet[Row],即DataSet的子集
    DataFrame其实就是Dateset[Row]
    在这里插入图片描述

1.3、RDD、DataFrame、DataSet的区别

结构图解
在这里插入图片描述

  • RDD[Person]
    以Person为类型参数,但不了解 其内部结构。
  • DataFrame
    提供了详细的结构信息schema列的名称和类型。这样看起来就像一张表了
  • DataSet[Person]
    不光有schema信息,还有类型信息
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值