zoukankan      html  css  js  c++  java
  • Spark SQL概述

    一、Spark SQL介绍

    1、为什么需要SQL

    1) 事实上的标准

    2) 易学易用

    3) 受众面大

    2、Shark(已经停止维护,不建议在生产上使用。)

    Shark产生的目的就是为了让hive跑在spark之上。

       Hive: 类似于sql的Hive QL语言, sql 翻译成 mapreduce

         特点: 使用mapreduce作为引擎

          改进: hive on tez、hive on spark、hive on mapreduce

    Spark: hive on spark ===> (也就是)shark

       shark刚推出时,很受欢迎。计算速度快,基于spark、基于内存的列式存储,与hive能够兼容。

    缺点: hive ql的解析、逻辑执行计划生成、执行计划优化都要依赖于hive

        仅仅只是把物理执行计划从mr作业替换成spark作业。

    Shark终止以后,产生了2个分支

    1) hive on spark

       Hive社区,源码是在Hive中

    2) Spark SQL

       Spark社区,源码是在Spark中

     支持多种数据源,多种优化技术,扩展性好很多。

    二、SQL on Hadoop常用框架介绍

    常用的框架如下图所示,包括HIVE,Impala,DRILL,Spark,presto,都是基于Hadoop的。

     1、HIVE(facebook开源)

      将sql装换成mapreduce

      提出了metastore(元数据)概念,例如Hive表的名字,表里有什么列,每个列的数据类型,数据存放在hdfs的路径上。这些元数据,在Spark也能使用。

    2、Impala(cloudera公司开发的, hadoop常用版本cdh也是这家公司开发的,也是生产上建议使用的cdh版本)

        提供了cm,web方式安装hadoop。

       Impala提供了sql,有自己的守护进程执行的,非mr,基于内存的,对内存的要求比较高。

       metastore(元数据)

    3、presto (facebook开源)

    国内用的比较多的如京东

    4、DRILL

         基于sql

         访问hdfs, rdbms,json、hbase,mangodb,s3、hive

    5、Spark SQL

          sql

           dataframe/dataset api

      metastore

          访问hdfs, rdbms,json、hbase,mangodb,s3、hive  ==> 外部数据源

    三、Spark SQL概述

    1、Spark Sql是Spark的核心组件,在Spark1.0中开始出现(April 2014)

    2、能有运行SQL和Hive QL,包括UDFs UDAFs 和SerDes。

    3、通过JDBC的方式连接已经存在的BI工具

    4、能够支持多种语言,包括Python,Scala,Java 和R语言。

    5、Spark SQL能处理结构化的数据。不仅仅有访问或者操作SQL的功能,还提供了 其他丰富的操作:外部数据源、优化

    总结:

    1) Spark SQL的应用不局限于SQL

    2) 访问hive、json、parquet等文件数据

    3) SQL只是Spark SQL的一个功能而已。

     4) Spark SQL提供了SQL的api、DataFrame和Dataset的API。

    四、Spark SQL愿景

    Write less code: 写更少的代码

    Read less data: 读更少的数据(优化引擎去掉不必要的数据)

    Let the optimizer do the hard work: 将优化的工作交给底层的优化器。

    五、Spark SQL架构图

    作者:Work Hard Work Smart
    出处:http://www.cnblogs.com/linlf03/
    欢迎任何形式的转载,未经作者同意,请保留此段声明!

  • 相关阅读:
    Implicit conversion from enumeration type 'enum CGImageAlphaInfo' to different enumeration type 'CGB
    iOS谋职之OC面试题
    IOS_视图实现圆角效果的三种方法及比较
    Objective-C 中的方法回掉
    returnValue of Chrome
    获取最新ADT下载地址的方法
    Git 分支使用
    Windows下运行jekyll,编码已不再是问题
    Github Pages另一个选择:GitCafe-Pages
    还没更换RubyGems镜像?
  • 原文地址:https://www.cnblogs.com/linlf03/p/14367059.html
Copyright © 2011-2022 走看看