• 大数据之SparkSQL 完整使用 (第八章)



    SparkSQL 概述

    一、SparkSQL 是什么

    Spark SQL 是 Spark 用于结构化数据(structured data)处理的 Spark 模块。

    二、Hive and SparkSQL

    SparkSQL 的前身是 Shark,给熟悉 RDBMS 但又不理解 MapReduce 的技术人员提供快
    速上手的工具。
    Hive 是早期唯一运行在 Hadoop 上的 SQL-on-Hadoop 工具。但是 MapReduce 计算过程
    中大量的中间磁盘落地过程消耗了大量的 I/O,降低的运行效率,为了提高 SQL-on-Hadoop
    的效率,大量的 SQL-on-Hadoop 工具开始产生,其中表现较为突出的是:
    ⚫ Drill
    ⚫ Impala
    ⚫ Shark
    其中 Shark 是伯克利实验室 Spark 生态环境的组件之一,是基于 Hive 所开发的工具,它修
    改了下图所示的右下角的内存管理、物理计划、执行三个模块,并使之能运行在 Spark 引擎
    上。

    在这里插入图片描述
    随着 Spark 的发展,对于野心勃勃的 Spark 团队来说,Spark 对于 Hive 的太多依 赖(如采用 Hive 的语法解析器、查询优化器等等),制约了 Spark 的 One Stack Rule Them All 的既定方针,制约了 Spark 各个组件的相互集成,所以提出了 SparkSQL 项目。``SparkSQL 抛弃原有 Shark 的代码,``汲取了 Shark 的一些优点,如内存列存储(In-Memory Columnar Storage)、Hive兼容性等,重新开发了SparkSQL代码;由于摆脱了对Hive的依赖性,SparkSQL 无论在数据兼容、性能优化、组件扩展方面都得到了极大的方便,真可谓“退一步,海阔天 空”。
    ➢ 数据兼容方面 SparkSQL 不但兼容 Hive,还可以从 RDD、parquet 文件、JSON 文件中
    获取数据,未来版本甚至支持获取 RDBMS 数据以及 cassandra 等 NOSQL 数据;
    ➢ 性能优化方面 除了采取 In-Memory Columnar Storage、byte-code generation 等优化技术
    外、将会引进 Cost Model 对查询进行动态评估、获取最佳物理计划等等;
    ➢ 组件扩展方面 无论是 SQL 的语法解析器、分析器还是优化器都可以重新定义,进行扩

    **但也因此发 展出两个支线:SparkSQL 和 Hive on Spark**

    其中 SparkSQL 作为 Spark 生态的一员继续发展,而不再受限于 Hive,只是兼容 Hive;而 Hive on Spark 是一个 Hive 的发展计划,该计划将 Spark 作为 Hive 的底层引擎之一,也就是 说,Hive 将不再受限于一个引擎,可以采用Map-Reduce、Tez、Spark 等引擎。 对于开发人员来讲,SparkSQL 可以简化 RDD 的开发,提高开发效率,且执行效率非常快,所以实际工作中,基本上采用的就是 SparkSQL。Spark SQL 为了简化 RDD 的开发, 提高开发效率,提供了 2个编程抽象,类似 Spark Core 中的 RDD

    地层为了简化RDD的开发、在RDD的上面封装了一层、这样的话他有两个数据模型、封装了新的模型之后、再去做开发底层就做了优化
    ➢ DataFrame
    ➢ DataSet

    三、SparkSQL 特点

    1、易整合

    无缝的整合了 SQL 查询和 Spark 编程

    2、统一的数据访问

    使用相同的方式连接不同的数据源

    在这里插入图片描述

    3、兼容 Hive

    在已有的仓库上直接运行 SQL 或者 HiveQL
    在这里插入图片描述

    4、标准数据连接

    通过 JDBC 或者 ODBC 来连接

    在这里插入图片描述

  • 相关阅读:
    MySQL笔记 去除表中的重复数据
    window 下 达梦数据库的备份和还原
    说说 Redis 事务
    学习在Linux系统中安装curl命令教程
    Jenkins(5)容器化部署 及 Jenkins集群配置
    英伟达算法岗面试,问的贼专业。。。
    计算性能的提升之混合式编程(MXNet)
    JAVA经典百题之喝水解渴
    Nginx反向代理
    LeetCode 第394场周赛个人题解
  • 原文地址:https://blog.csdn.net/qq_42082701/article/details/125603711