APC 技術ブログ


株式会社 エーピーコミュニケーションズの技術ブログです。

An In Depth Look at the New Features of Apache Spark 3.5


Hello everyone, this is Daniel. Today, we're focusing on the release of Apache Spark 3.5. Although this session concentrates specifically on version 3.5, it's worth noting that this release is remarkably stable, setting the stage for a dedicated follow-up session on Apache Spark 4.0.

With over a decade of history, Apache Spark has established itself as a foundational platform for big data processing, specializing in data management and ETL (Extract, Transform, Load) tasks. The evolution of this platform showcases the global cooperation and efforts of an extensive community. Notably, Apache Spark has been downloaded over a billion times, has over 100,000 inquiries on Stack Overflow, and is recognized across all major LLMs worldwide.

In our discussion today, we'll revisit some crucial milestones in the development of Apache Spark and observe how the latest version 3.5 refines the practice of data processing. As a pioneer in technological advancement, the legacy of Apache Spark continues to be influential and impactful.

Stay connected as we explore the enhancements brought by Apache Spark 3.5. I hope this introduction provides a clearer understanding of Apache Spark's rich heritage and its ongoing contributions to technical excellence.

Enhanced Spark Connect

One of the most notable enhancements in Apache Spark™ 3.5 is "Spark Connect". Let's delve into what Spark Connect is and why it's important.

What is Spark Connect?

Spark Connect is an innovative feature introduced in Apache Spark, designed to make the runtime environment more flexible and easier to manage. It's particularly designed to simplify the management and manipulation of programs running different versions of Spark or using different programming languages like Scala and Python.

Why is Spark Connect Important?

Traditionally, when running Spark programs, these programs (whether written in Scala or Python) function directly as a driver process. This setup is convenient in the early stages of development, but it presents multiple challenges as the system scales.

This close coupling has a history of making cluster upgrades, seamless version switching, and efficient integration of new features challenging without disrupting existing operations. Moreover, in environments using different versions of Scala or Python, the management of compatibility becomes increasingly complex, requiring adjustments to specific configurations.

Benefits of Enhanced Spark Connect

With enhancements introduced in Apache Spark 3.5, Spark Connect now serves as a centralized management system for program execution. This system supports smooth data processing across different program versions and simplifies the integration of new features. The benefits include:

  • Ease of Upgrades and Version Switching: Spark Connect reduces the complexity associated with upgrading Spark clusters and switching between different Spark versions. It abstracts underlying version dependencies, enabling smoother transitions and minimizing downtime.

  • Increased Flexibility: Organizations can more efficiently manage various program versions and language dependencies. This flexibility is crucial in dynamic tech environments where updates and upgrades are frequent.

  • Enhanced Efficiency: By streamlining the management of different programming environments, Spark Connect supports the optimization of resource use and operational efficiency. This results in faster data processing and reduced operational costs.

These enhancements facilitate organizations in scaling their data processing capabilities, adopting new technological advancements more swiftly, and maintaining a competitive edge in large-scale data utilization.

In Apache Spark™ 3.5, handling identifiers (such as table names and column names) within SQL queries has been significantly improved. The adoption of the identifier keyword allows for specifying identifier keys and values externally within SQL commands, enhancing security and flexibility.

Previously, embedding variables like tableName into SQL queries through Scala string interpolation was common. However, this method harbored risks like SQL injections. Now, integrating the identifier keyword in specifying parts of SELECT statements or table names clarifies the use of identifiers, making SQL commands easier to maintain, understand, and secure. This enhancement in the SQL module makes data operations more robust and secure, positioning Apache Spark as a more influential tool in data-driven decision-making processes.

Apache Spark 3.5's Advances in UDTFs and Polymorphic Analysis

A notable improvement in Apache Spark 3.5 relates to User-Defined Table Generating Functions (UDTFs), with particular focus on the newly introduced feature of "polymorphic analysis". This section digs deeper into this significant advancement and its impact on data manipulation in real-world applications.

Importance of Polymorphic Analysis

In previous versions of Spark, UDTFs were limited to statically defined schemas with predictable and fixed output columns. The introduction of polymorphic analysis shifts this paradigm, allowing UDTFs to dynamically compute their schemas based on runtime arguments.

Insights into Implementation

To incorporate polymorphic analysis, developers utilize the analyze method within UDTFs. This method evaluates the types of provided arguments, considers the schema of the input table, and assesses existing scalar values. This dynamic evaluation helps adjust the function's output schema, enhancing flexibility and adaptability to accommodate diverse data scenarios.

Advantages for Development

This innovative feature expands the scope of activities for developers engaged in data processing. It aids in handling various data formats within a single function without being constrained by predefined data schemas. This capability is particularly beneficial in environments where data formats are diverse or rapidly evolving.

The implementation of polymorphic analysis in Apache Spark 3.5 represents a progressive step towards a more dynamic data processing framework. It enables developers and data scientists to tackle various data processing challenges more effectively, marking it as a key feature in this latest release.

Enhancements in Streaming and Future Prospects in Apache Spark 3.5

This focused session explored significant enhancements related to streaming in Apache Spark 3.5, particularly emphasizing the integration of DSP (Digital Signal Processing) with PySpark and the introduction of improved data frame comparison methods.

Enhanced Data Frame Comparison Apache Spark 3.5 has added capabilities that enable more accurate comparisons of data frames. This feature highlights subtle differences between sets, becoming a significant asset during dataset debugging and validation. It is structured to notify users about even a single differing value within rows that are largely identical, enhancing the clarity and efficiency of the data evaluation process.

Integration of DSP with PySpark Integrating DSP features with PySpark marks a revolutionary advancement in Apache Spark 3.5. This integration enables rich approaches to signal processing tasks, effectively managing and manipulating DSP operations within PySpark. For Python enthusiasts, this fusion of technologies simplifies complex data processing queries and advances capabilities in machine learning projects and big data management tasks.


The "Enhancements in Streaming and Future Prospects" session provided a broad overview of the current improvements and potential futures embedded in Apache Spark 3.5. By delving deeper into enhanced data frame comparisons and DSP integration, it is evident that Apache Spark is steadily paving the way towards more sophisticated and comprehensible data processing technologies. These improvements are not merely incremental but foundational to groundbreaking methodologies in data processing. We eagerly anticipate further innovations that will continue to revolutionize the landscape of big data analytics.

About the special site during DAIS

This year, we have prepared a special site to report on the session contents and the situation from the DAIS site! We plan to update the blog every day during DAIS, so please take a look.