Fork me on GitHub

Spark笔记11-Spark-SQL基础

Spark SQL基础

Hive

Hive会将SQL语句转成MapReduce作业,本身不执行SQL语句。 基本执行原理如下图:

KoI9UO.png

Shark

HiveHadoop生态圈上运行的,于是出现了在Spark生态圈的Shark

  • 基本上和Hive的解析过程、逻辑执行等相同
  • mapreduce作业换成了Spark作业
  • HiveQL解析换成了Spark上的RDD操作

KooQw6.png

  • 存在的两个主要问题:
    • spark是线程并行,mapreduce是进程级并行
    • spark在兼容Hive的基础上存在线程安全性问题

Spark SQL 产生原因

关系数据库在大数据时代下不再满足需求:

  • 用户要从不同的数据源操作不同的数据,包含结构化和非结构化

  • 用户需要执行高级分析,比如机器学习和图形处理等

  • 大数据时代经常需要融合关系查询和复杂分析算法

    Spark SQL解决的两大问题:

  1. 提供DF API,对内部和外部的各种数据进行各种关系操作
  2. 支持大量的数据源和数据分析算法,可以进行融合

架构

  • Spark SQL在Hive 兼容层面仅仅是依赖HiveQL解析、Hive元数据
  • 执行计划生成和优化是由Catalyst(函数式关系查询优化框架)负责

KoT4KA.png

Spark SQL中增加了数据框DataFrame,数据的来源可以是RDD,也可以是Hive、HDFS、Cassandra等外部数据源,还可以是JSON格式的数据。 支持的语言是:

  • java
  • python
  • Scala

KoHEY8.png

本文标题:Spark笔记11-Spark-SQL基础

发布时间:2019年10月31日 - 20:10

原始链接:http://www.renpeter.cn/2019/10/31/Spark%E7%AC%94%E8%AE%B011-Spark-SQL%E5%9F%BA%E7%A1%80.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Coffee or Tea