spark 发展史,最近迎来 3.0 时代
作者头像
  • 南京本地宝
  • 2019-11-16 14:53:00 1

本文旨在介绍Apache Spark 3.0预览版中新增的功能和特性,帮助读者快速了解这些新特性,从而更容易地适应新版本。

Spark发展史

Spark在过去的发展过程中不断进步和完善,特别是在3.0版本中,增加了一些重要的新功能。

新增功能详解

1. 动态分区(Dynamic Partition Pruning)

在Spark 3.0之前,Spark并不支持动态分区。动态分区指的是在进行多表连接操作时,根据条件语句自动进行分区裁剪优化。例如:

sql SELECT t1.id, t2.pKey FROM t1 JOIN t2 ON t1.pKey = t2.pKey AND t2.id < 2;

在没有启用动态分区的情况下,执行过程会扫描所有满足条件的数据,然后再进行连接操作。而启用动态分区后,可以提前过滤掉无用数据,显著减少内存消耗。在实际应用中,性能提升可达33倍。

2. 自适应查询执行(Adaptive Query Execution)

自适应查询执行可以根据实际数据分布和组织情况,评估执行时间和资源消耗,从而选择成本最低的执行计划。Spark SQL的执行流程主要包括:

  1. 解析SQL语句,生成未绑定的逻辑执行计划;
  2. 分析规则完善逻辑计划,使其具备完整属性;
  3. 优化规则将逻辑计划合并、裁剪,生成优化的逻辑计划;
  4. 规划策略将优化的逻辑计划转换成可执行的物理计划;
  5. 执行查询计划前进行预处理。

自适应查询执行可以在运行过程中动态调整执行计划,以实现最佳性能。具体细节可参考相关文档。

3. 支持GPU调度(Support GPU Scheduling)

Spark 3.0增加了对GPU的支持,这有助于加速大规模数据处理任务。目前,YARN和Kubernetes已经支持GPU,并提供了相应的API。在Spark 3.0中,可以在standalone、YARN和Kubernetes环境下调度GPU计算,几乎不影响现有作业。

4. 更好的API扩展(Better API Extensions)

尽管这不是全新的功能,但Spark从2.3.0版本起引入了Data Source API V2,以解决旧版API的一些不足,如依赖SQLContext、缺乏列式数据库支持、写操作不支持事务等问题。这些改进将在Spark 3.0.0中进一步完善。

5. 更好的ANSI SQL兼容性

Spark 3.0致力于减少与ANSI SQL标准的差异,通过添加ANSI SQL函数、区分SQL保留关键字和内置函数等方式,提高与标准的兼容性。

Spark生态系统

Spark主要面向数据工程师和数据科学家两大群体,它们之间相互协作。在数据分析领域,Spark与Python语言结合紧密,特别适合处理大规模数据集。此外,Databricks开源的Delta Lake也在数据工程领域发挥了重要作用,支持数据版本控制、增量迭代等功能,提高了数据处理的效率和可靠性。

希望以上内容可以帮助大家更好地理解和使用Apache Spark 3.0的新功能。

    本文来源:图灵汇
责任编辑: : 南京本地宝
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
发展史迎来最近时代spark3.0
    下一篇