美文网首页我爱编程
Spark SQL(一)入门介绍

Spark SQL(一)入门介绍

作者: Sx_Ren | 来源:发表于2018-03-14 10:21 被阅读0次

    假设有如下文本文件:
    id, name, age, city
    1001,zhangsan,45,beijing
    1002,lisi,35,shanghai
    1003,wangwu,29,tianjin
    .......
    基于hive对上述文件进行统计分析步骤为:

    1. table定义:person
    2. column定义:
      id:int
      name:string
      age: int
      city:string
    3. hive:load data
    4. sql: query....

    Hive:是类似于sql的Hive QL语言, sql==>mapreduce
    特点:查询计划被转化为MapReduce任务,执行效率差
    改进:hive on tez、hive on spark、hive on mapreduce

    Spark: hive on spark ==> shark(hive on spark)
    shark 刚推出时非常受欢迎, 基于spark、基于内存的列式存储、与hive能够兼容
    缺点:hive ql的解析、逻辑执行计划生成、执行计划的优化是依赖于hive的
    仅仅只是把物理执行计划从mr作业替换成spark作业

    Shark终止以后,产生了2个分支:
    1)hive on spark
    Hive社区,源码是在Hive中
    2)Spark SQL
    Spark社区,源码是在Spark中
    支持多种数据源,多种优化技术,扩展性好很多
    以上可以说是Spark SQL产生的背景及衍生过程
    目前,基于Hadoop使用SQL语句查询(SQL on Hadoop),有如下方式:

    1. Hive
      sql ==> mapreduce
      metastore : 元数据
      sql:database、table、view
      facebook
    2. impala
      cloudera : cdh(建议大家在生产上使用的hadoop系列版本)、cm
      sql:自己的守护进程执行的,非mr
      metastore
    3. presto
      facebook
      京东
      sql
    4. drill
      sql
      访问:hdfs、rdbms、json、hbase、mongodb、s3、hive
    5. Spark SQL
      sql
      dataframe/dataset api
      metastore
      访问:hdfs、rdbms、json、hbase、mongodb、s3、hive ==> 外部数据源

    对于Spark SQL,官网是这么说的:Spark SQL is Apache Spark's module for working with structured data.
    可以是针对于structured data(结构化数据),而不仅仅是SQL,个人认为这个名字起的不是很好,可见
    Spark SQL它不仅仅有访问或者操作SQL的功能,还提供了其他的非常丰富的操作:外部数据源、优化

    Spark SQL总结:

    1. Spark SQL的应用并不局限于SQL;
    2. 访问hive、json、parquet等文件的数据;
    3. SQL只是Spark SQL的一个功能而已,可见Spark SQL这个名字起的并不恰当
    4. Spark SQL提供了SQL的api、DataFrame和Dataset的API;

    相关文章

      网友评论

        本文标题:Spark SQL(一)入门介绍

        本文链接:https://www.haomeiwen.com/subject/qnzlfftx.html