- Mastering Apache Spark 2.x(Second Edition)
- Romeo Kienzler
- 301字
- 2021-07-02 18:55:24
What's new in Apache Spark V2?
Since Apache Spark V2, many things have changed. This doesn't mean that the API has been broken. In contrast, most of the V1.6 Apache Spark applications will run on Apache Spark V2 with or without very little changes, but under the hood, there have been a lot of changes.
The first and most interesting thing to mention is the newest functionalities of the Catalyst Optimizer, which we will cover in detail in Chapter 3, The Catalyst Optimizer. Catalyst creates a Logical Execution Plan (LEP) from a SQL query and optimizes this LEP to create multiple Physical Execution Plans (PEPs). Based on statistics, Catalyst chooses the best PEP to execute. This is very similar to cost-based optimizers in Relational Data Base Management Systems (RDBMs). Catalyst makes heavy use of Project Tungsten, a component that we will cover in Chapter 4, Apache Spark Streaming.
Although the Java Virtual Machine (JVM) is a masterpiece on its own, it is a general-purpose byte code execution engine. Therefore, there is a lot of JVM object management and garbage collection (GC) overhead. So, for example, to store a 4-byte string, 48 bytes on the JVM are needed. The GC optimizes on object lifetime estimation, but Apache Spark often knows this better than JVM. Therefore, Tungsten disables the JVM GC for a subset of privately managed data structures to make them L1/L2/L3 Cache-friendly.
In addition, code generation removed the boxing of primitive types polymorphic function dispatching. Finally, a new first-class citizen called Dataset unified the RDD and DataFrame APIs. Datasets are statically typed and avoid runtime type errors. Therefore, Datasets can be used only with Java and Scala. This means that Python and R users still have to stick to DataFrames, which are kept in Apache Spark V2 for backward compatibility reasons.
- 程序員修煉之道:程序設計入門30講
- MongoDB for Java Developers
- C#程序設計(慕課版)
- 實戰Java高并發程序設計(第3版)
- Learning Vaadin 7(Second Edition)
- 大數據分析與應用實戰:統計機器學習之數據導向編程
- Access 2010中文版項目教程
- HoloLens與混合現實開發
- 零基礎學Python編程(少兒趣味版)
- Instant jQuery Boilerplate for Plugins
- Sails.js Essentials
- 計算語言學導論
- 企業級Java現代化:寫給開發者的云原生簡明指南
- Three.js Essentials
- Thymeleaf 3完全手冊