Spark SQL的愿景

一、Spark SQL的愿景

主要有以下三点:
- Write less code
- Read less data
- Let the optimizer do the hard work


二、Write less code

  1. Unified interface to reading/writing data in a variety of formats
    对不同的数据类型使用统一的接口来读写
    这里写图片描述

  2. ETL using custom data source

  3. Common operations can be expressed concisely as calls to the DataFrame API.

    • Selecting required columns
    • Joining different data sources
    • Aggregationg(count, sum, average,etc)
    • filtering
      常用的数据操作可以使用DataFrame的API非常简洁的完成。
  4. Schema inference (Schema推导)
    比如半结构化的数据,如json可以自动推导字段

  5. Schema merging
    比如int 类型字段和double类型字段合并,可以自动兼容的使用double类型。

  6. Partition Discovery(自动的分区探测)


三、Read less data

  1. Converting to more efficient formats, Using columnar formats(i.e. parquet)
  2. Using partitioning
  3. Skipping data using statistics
  4. Pushing predicates into storage systems(i.e. JDBC)

提升大数据处理速度最有效的方法就是忽略无关的数据。

1.使用列式存储(columnar formats),比如Parquet、ORC、RCFile
2.使用分区裁剪(partitioning pruning),比如按天分区,按小时分区等
3.利用数据文件中附带的统计信息进行剪枝:例如每段数据都带有最大值、最小值和NULL值等统计信息,当某一数据段肯定不包含查询条件的目标数据时,可以直接跳过这段数据。(例如字段age某段最大值为20,但查询条件是>50岁的人时,显然可以直接跳过这段)
4.将查询源中的各种信息下推至数据源处,从而充分利用数据源自身的优化能力来完成剪枝、过滤条件下推等优化。

什么是列式存储?列式存储相比于行式存储的优缺点?– 博文待写


四、Let the optimizer do the hard work

这里写图片描述

Catalyst优化器对SQL语句进行优化,从而得到更有效的执行方案。即使我们在写SQL的时候没有考虑这些优化的细节,Catalyst也可以帮我们做到不错的优化结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值