当前位置:   article > 正文

Spark2 之 新特性易用性、高性能、智能化_spark2的作用

spark2的作用

目录

  • 1、新特性之易用性
  • 2、新特性之高性能
  • 3、新特性之智能化

1、新特性之易用性

(1)在标准化SQL支持方面,引入了新的ANSI-SQL解析器,提供标准化SQL的解析功能,而且还提供了子查询的支持。Spark现在可以运行完整的99个TPC-DS查询,这就要求Spark包含大多数SQL 2003标准的特性。这么做的好处在于,SQL一直是大数据应用领域的一个最广泛接受的标准,比如说Hadoop,做大数据的企业90%的时间都在用Hive,写SQL做各种大数据的统计和分析。因此Spark SQL提升对SQL的支持,可以大幅度减少用户将应用从其他技术(比如Oracle、Hive等)迁移过来的成本。

(2)统一了dataframe和dataset。从Spark 2.0开始,Dataframe就只是Dataset[Row]的一个别名,不再是一个单独的类了。无论是typed方法(map、filter、groupByKey等)还是untyped方法(select、groupBy等),都通过Dataset来提供。而且Dataset API将成为Spark的新一代流式计算框架——structured streaming的底层计算引擎。但是由于Python和R这两个语言都不具备compile-time type-safety的特性,所以就没有引入Dataset API,所以这两种语言中的主要编程接口还是Dataframe。

(3)SparkSession是新的Spark上下文以及入口,用于合并SQLContext和HiveContext,并替代它们。因为以前提供了SQLContext和HiveContext两种上下文入口,因此用户有时会有些迷惑,到底该使用哪个接口。现在好了,只需要使用一个统一的SparkSession即可。但是为了向后兼容性,SQLContext和HiveContext还是保留下来了。

(4)Spark 2.0提供了新版本的Accumulator,提供了各种方便的方法,比如说直接通过一个方法的调用,就可以创建各种primitive data type(原始数据类型,int、long、double)的Accumulator。并且在spark web ui上也支持查看spark application的accumulator,性能也得到了提升。老的Accumulator API还保留着,主要是为了向后兼容性。

2、新特性之高性能

(1)Spark 2.0的一个重大的特点就是搭载了最新的第二代tungsten引擎。第二代tungsten引擎吸取了现代编译器以及并行数据库的一些重要的思想,并且应用在了spark的运行机制中。其中一个核心的思想,就是在运行时动态地生成代码。在这些自动动态生成的代码中,可以将所有的操作都打包到一个函数中,这样就可以避免多次virtual function call。而且还可以通过cpu register来读写中间数据,而不是通过cpu cache来读写数据。上述技术整体被称作“whole-stage code generation”,中文也可以叫“全流程代码生成”。

(2)spark 2.0中,除了whole-stage code generation技术以外,还使用了其他一些新技术来提升性能。比如说对Spark SQL的catalyst查询优化器做了一些性能优化,来提升对一些常见查询的优化效率,比如null值处理等。再比如说,通过vectarization技术将parquet文件扫描的吞吐量提升了3倍以上。

3、新特性之智能化

(1)Structured Streaming提供了与批处理计算类似的API。要开发一个流式计算应用,开发人员只要使用Dataframe/Dataset API编写与批处理计算一样的代码即可,Structured Streaming会自动将这些类似批处理的计算代码增量式地应用到持续不断进入的新数据上。这样,开发人员就不需要花太多时间考虑状态管理、容错、与离线计算的同步等问题。Structured Streaming可以保证,针对相同的数据,始终与离线计算产出完全一样的计算结果。

(2)Structured Streaming还提供了与存储系统的事务整合。它会进行自动的容错管理以及数据一致性的管理,如果开发人员要写一个应用程序来更新数据库,进而提供一些实时数据服务,与静态数据进行join,或者是在多个存储系统之间移动数据,那么Structured Streaming可以让这些事情更加简单。

(3)Structured Streaming与Spark其余的组件都能够进行完美的整合。比如可以通过Spark SQL对实时数据进行统计分析,与静态数据进行join,还有其他的使用dataframe/dataset的组件,这样就可以让开发人员构建完整的流式计算引用,而不仅仅只是一个流式计算引擎而已。在未来,Spark会将Structured Streaming与Spark MLlib的整合做的更好。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/691814
推荐阅读
  

闽ICP备14008679号