很多人一个误区,Spark SQL重点不是在SQL啊,而是在结构化数据处理!

Spark SQL结构化数据处理

  概要:

      01 Spark SQL概述

      02 Spark SQL基本原理

      03 Spark SQL编程

      04 分布式SQL引擎

      05 用户自定义函数

      06 性能调优

 

Spark SQL概述

  Spark SQL是什么?

    Spark SQL is a Spark module for structured data processing

                

  特别注意:.3.0 及后续版本中,SchemaRDD 已经被DataFrame 所取代。所以,我们以后的重点是DataFrame,各位博友们!

何为结构化数据

                   

SparkSQL 与 Spark Core的关系

  Spark SQL构建在Spark Core之上专门用来处理结构化数据(不仅仅是SQL)

  Spark SQL在Spark Core的基础上针对结构化数据处理进行很多优化和改进,

  简单来讲:

    Spark SQL 支持很多种结构化数据源,可以让你跳过复杂的读取过程,轻松从各种数据源中读取数据

    当你使用SQL查询这些数据源中的数据并且只用到了一部分字段时,SparkSQL可以智能地只扫描这些用到的字段,而不是像SparkContext.hadoopFile中那样简单粗暴地扫描全部数据.

Spark SQL前世今生:由Shark发展而来

              

Spark SQL前世今生:可以追溯到Hive

  由facebook 开源, 最初用于解决海量结构化的日志数据统计问题的ETL(Extraction-Transformation-Loading) 工具

  构建在Hadoop上的数据仓库平台,设计目标是使得可以用传统SQL操作Hadoop上的数据,让熟悉SQL编程的人员也能拥抱Hadoop。

    1.使用HQL 作为查询接口

    2.使用HDFS 作为底层存储

    3.使用MapRed 作为执行层

  现已成为Hadoop平台上的标配。

    曾在一段时间之内成为SQL on Hadoop的唯一选择!

http://hive.apache.org/

https://cwiki.apache.org/confluence/display/Hive/Home

https://cwiki.apache.org/confluence/display/Hive/LanguageManual

Spark SQL前世今生:Hive 到 Shark(在Hive上做改进)

  背景:Spark出现之后,社区开始考虑基于Spark提供SQL解决方案,这就是诞生的背景

  基于Hive的代码库,修改了Hive的后端引擎使其运行在Spark上(在Hive上做改进)。

          

  导致社区放弃Shark的主要原因:

    和Spark程序的集成有诸多限制

   Hive的优化器不是为Spark而设计的,计算模型的不同,使得Hive的优化器来优化Spark程序遇到了瓶颈。

Spark SQL前世今生:Shark 到 Spark SQL(彻底摆脱但是兼容Hive)

          

Spark SQL前世今生:Hive 到 Hive on Spark

  Spark SQL诞生的同时,Hive还在继续发展,一些深耕Hive的用户意识到迁移还是需要成本的,于是Hive社区提出了Hive on Spark的计划

  从Hive 1.1+开始可用,还在发展过程中

Spark SQL前世今生

                

Spark SQL概念学习系列之Spark SQL概述的更多相关文章

  1. Spark SQL概念学习系列之Spark SQL 架构分析(四)

    Spark SQL 与传统 DBMS 的查询优化器 + 执行器的架构较为类似,只不过其执行器是在分布式环境中实现,并采用的 Spark 作为执行引擎. Spark SQL 的查询优化是Catalyst ...

  2. Spark SQL概念学习系列之分布式SQL引擎

    不多说,直接上干货! parkSQL作为分布式查询引擎:两种方式 除了在Spark程序里使用Spark SQL,我们也可以把Spark SQL当作一个分布式查询引擎来使用,有以下两种使用方式: 1.T ...

  3. Spark RDD概念学习系列之Spark Hash Shuffle内幕彻底解密(二十)

    本博文的主要内容: 1.Hash Shuffle彻底解密 2.Shuffle Pluggable解密 3.Sorted Shuffle解密 4.Shuffle性能优化 一:到底什么是Shuffle? ...

  4. Spark SQL概念学习系列之Spark SQL的简介(一)

    Spark SQL提供在大数据上的SQL查询功能,类似于Shark在整个生态系统的角色,它们可以统称为SQL on Spark. 之前,Shark的查询编译和优化器依赖于Hive,使得Shark不得不 ...

  5. Spark SQL概念学习系列之Spark SQL 优化策略(五)

    查询优化是传统数据库中最为重要的一环,这项技术在传统数据库中已经很成熟.除了查询优化, Spark SQL 在存储上也进行了优化,从以下几点查看 Spark SQL 的一些优化策略. (1)内存列式存 ...

  6. Spark SQL概念学习系列之Spark SQL入门

    前言 第1章   为什么Spark SQL? 第2章  Spark SQL运行架构 第3章 Spark SQL组件之解析 第4章 深入了解Spark SQL运行计划 第5章  测试环境之搭建 第6章 ...

  7. Spark SQL概念学习系列之Spark SQL入门(八)

    前言 第1章   为什么Spark SQL? 第2章  Spark SQL运行架构 第3章 Spark SQL组件之解析 第4章 深入了解Spark SQL运行计划 第5章  测试环境之搭建 第6章 ...

  8. Spark SQL概念学习系列之Spark SQL基本原理

    Spark SQL基本原理 1.Spark SQL模块划分 2.Spark SQL架构--catalyst设计图 3.Spark SQL运行架构 4.Hive兼容性 1.Spark SQL模块划分 S ...

  9. Spark SQL概念学习系列之Spark生态之Spark SQL(七)

    具体,见

随机推荐

  1. USACO 2.1 Hamming Codes

    Hamming CodesRob Kolstad Given N, B, and D: Find a set of N codewords (1 <= N <= 64), each of ...

  2. 子线程中刷新了UI

    This application is modifying the autolayout engine from a background thread, which can lead to engi ...

  3. 在centos上面开机自启动某个程序

    Systemd 是 Linux 系统工具,用来启动守护进程,已成为大多数发行版的标准配置.可以通过 systemctl --version 命令来查看使用的版本 常用命令 # 立即启动一个服务 $ s ...

  4. c# CacheHelper缓存帮助类

    一.开篇 主要功能:改善程序性能.服务器的响应速度,尤其是当数据的处理过程变得复杂以及访问量变大时,变得比较明显.有些数据并非时刻在发生变化,如果我们可以将一些变化不频繁的数据的最终计算结果(包括页面 ...

  5. PHP 导出excel 数据量大时

    public function ceshiexcel1(){ set_time_limit(0); $filename = '病毒日志'; header('Content-Type: applicat ...

  6. ListView的Item动画

    1.效果图 2.需求就是点击item歌曲时,实现一种飞入到预约按钮处的效果 3.思路:在布局文件中加入了一个条目布局,和listView的item一样,点击listView的item时,使用给条目布局 ...

  7. linux 下vim中关于删除某段,某行,或者全部删除的命令

  8. CF949A Zebras 构造

    是一道不错的构造题. 我们观察,一个 111 的前后必须都有 000. 那么,我们开一个二维数组 (vector)(vector)(vector),这样每遇到一个 000 就将 000 加入到当前的 ...

  9. BZOJ 3295 [CQOI2011]动态逆序对 (三维偏序CDQ+树状数组)

    题目大意: 题面传送门 还是一道三维偏序题 每次操作都可以看成这样一个三元组 $<x,w,t>$ ,操作的位置,权值,修改时间 一开始的序列看成n次插入操作 我们先求出不删除时的逆序对总数 ...

  10. [luogu3369] 普通平衡树(splay模板)

    题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 1.插入 xx 数 2.删除 xx 数(若有多个相同的数,因只删除一个) 3.查询 xx 数的排名(排名定义为比 ...