From c53613331a5f5c3351ce6dd0f724d0508ce75ede Mon Sep 17 00:00:00 2001 From: PHILO-HE Date: Tue, 30 Sep 2025 22:56:56 +0800 Subject: [PATCH 1/2] [DOC] Improve and simplify README.md and NewToGluten.md (#10793) --- README.md | 185 ++++----- docs/developers/NewToGluten.md | 360 ++++++------------ docs/image/gluten_golden_file_upload.png | Bin 175664 -> 0 bytes .../{README.MD => README.md} | 0 4 files changed, 215 insertions(+), 330 deletions(-) delete mode 100644 docs/image/gluten_golden_file_upload.png rename tools/qualification-tool/{README.MD => README.md} (100%) diff --git a/README.md b/README.md index 98667945f842..39826a27fd2b 100644 --- a/README.md +++ b/README.md @@ -1,63 +1,66 @@ -![Gluten](docs/image/gluten-logo.svg) +Gluten -# Apache Gluten (Incubating): A Middle Layer for Offloading JVM-based SQL Engines' Execution to Native Engines +# Apache Gluten (Incubating) + +**A Middle Layer for Offloading JVM-based SQL Engines' Execution to Native Engines** [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/8452/badge)](https://www.bestpractices.dev/projects/8452) -# 1. Introduction -## Problem Statement -Apache Spark is a stable, mature project that has been developed for many years. It is one of the best frameworks to scale out for processing petabyte-scale datasets. However, the Spark community has had to address -performance challenges that require various optimizations over time. As a key optimization in Spark 2.0, Whole Stage Code Generation is introduced to replace Volcano Model, which achieves 2x speedup. Henceforth, most -optimizations are at query plan level. Single operator's performance almost stops growing. +## 1. Introduction + +### Background + +Apache Spark is a mature and stable project that has been under continuous development for many years. It is one of the most widely used frameworks for scaling out the processing of petabyte-scale datasets. +Over time, the Spark community has had to address significant performance challenges, which required a variety of optimizations. A major milestone came with Spark 2.0, where Whole-Stage Code Generation +replaced the Volcano Model, delivering up to a 2× speedup. Since then, most subsequent improvements have focused on the query plan level, while the performance of individual operators has almost stopped improving.

- +

-On the other side, native SQL engines have been developed for a few years, such as Clickhouse, Arrow and Velox, etc. With features like native execution, columnar data format and vectorized -data processing, these native engines can outperform Spark's JVM based SQL engine. However, they only support single node execution. +In recent years, several native SQL engines have been developed, such as ClickHouse and Velox. With features like native execution, columnar data formats, and vectorized +data processing, these engines can outperform Spark’s JVM-based SQL engine. However, they currently don't directly support Spark SQL execution. + +### Design Overview -## Gluten's Basic Design -“Gluten” is Latin for "glue". The main goal of Gluten project is to glue native engines with SparkSQL. Thus, we can benefit from high scalability of Spark SQL framework and high performance of native engines. +“Gluten” is Latin for "glue". The main goal of the Gluten project is to glue native engines to Spark SQL. Thus, we can benefit from the high performance of native engines and the high scalability enabled by the Spark ecosystem. + +The basic design principle is to reuse Spark’s control flow, while offloading compute-intensive data processing to the native side. More specifically: -The basic design rule is that we would reuse Spark's whole control flow and as much JVM code as possible but offload the compute-intensive data processing to native side. Here is what Gluten does basically: * Transform Spark’s physical plan to Substrait plan, then transform it to native engine's plan. * Offload performance-critical data processing to native engine. * Define clear JNI interfaces for native SQL engines. -* Switch available native backends easily. +* Allow easy switching between available native backends. * Reuse Spark’s distributed control flow. * Manage data sharing between JVM and native. -* Extensible to support more native engines. +* Provide extensibility to support more native engines. -## Target User -Gluten's target user is anyone who aspires to accelerate SparkSQL fundamentally. As a plugin to Spark, Gluten doesn't require any change for dataframe API or SQL query, but only requires user to make correct configuration. -See Gluten configuration properties [here](https://github.com/apache/incubator-gluten/blob/main/docs/Configuration.md). +### Target Users -## References -You can click below links for more related information. -- [Gluten Intro Video at Data AI Summit 2022](https://www.youtube.com/watch?v=0Q6gHT_N-1U) -- [Gluten Intro Article at Medium.com](https://medium.com/intel-analytics-software/accelerate-spark-sql-queries-with-gluten-9000b65d1b4e) -- [Gluten Intro Article at Kyligence.io(in Chinese)](https://cn.kyligence.io/blog/gluten-spark/) -- [Velox Intro from Meta](https://engineering.fb.com/2023/03/09/open-source/velox-open-source-execution-engine/) +Gluten's target users include anyone who wants to fundamentally accelerate Spark SQL. As a plugin to Spark, Gluten requires no changes to the DataFrame API or SQL queries; users only need to configure it correctly. -# 2. Architecture -The overview chart is like below. Substrait provides a well-defined cross-language specification for data compute operations (see more details [here](https://substrait.io/)). Spark physical plan is transformed to Substrait plan. Then Substrait plan is passed to native through JNI call. -On native side, the native operator chain will be built out and offloaded to native engine. Gluten will return Columnar Batch to Spark and Spark Columnar API (since Spark-3.0) will be used at execution time. Gluten uses Apache Arrow data format as its basic data format, so the returned data to Spark JVM is ArrowColumnarBatch. +## 2. Architecture + +The overview chart is shown below. [Substrait](https://substrait.io/) provides a well-defined, cross-language specification for data compute operations. Spark’s physical plan is transformed into a Substrait plan, +which is then passed to the native side through a JNI call. On the native side, a chain of native operators is constructed and offloaded to the native engine. Gluten returns the results as a ColumnarBatch, +and Spark’s Columnar API (introduced in Spark 3.0) is used during execution. Gluten adopts the Apache Arrow data format as its underlying representation.

- +

-Currently, Gluten only supports Clickhouse backend & Velox backend. Velox is a C++ database acceleration library which provides reusable, extensible and high-performance data processing components. More details can be found from https://github.com/facebookincubator/velox/. Gluten can also be extended to support more backends. +Currently, Gluten supports only ClickHouse and Velox backends. Velox is a C++ database acceleration library which provides reusable, extensible and high-performance data processing components. In addition, Gluten is designed to be extensible, +allowing support for additional backends in the future. + +Gluten's key components: +* **Query Plan Conversion**: Converts Spark's physical plan to Substrait plan. +* **Unified Memory Management**: Manages native memory allocation. +* **Columnar Shuffle**: Handles shuffling of Gluten's columnar data. The shuffle service of Spark core is reused, while a columnar exchange operator is implemented to support Gluten's columnar data format. +* **Fallback Mechanism**: Provides fallback to vanilla Spark for unsupported operators. Gluten's ColumnarToRow (C2R) and RowToColumnar (R2C) convert data between Gluten's columnar format and Spark's internal row format to support fallback transitions. +* **Metrics**: Collected from Gluten native engine to help monitor execution, identify bugs, and diagnose performance bottlenecks. The metrics are displayed in Spark UI. +* **Shim Layer**: Ensures compatibility with multiple Spark versions. Gluten supports the latest 3–4 Spark releases during its development cycle, and currently supports Spark 3.2, 3.3, 3.4, and 3.5. -There are several key components in Gluten: -* **Query Plan Conversion**: converts Spark's physical plan to Substrait plan. -* **Unified Memory Management**: controls native memory allocation. -* **Columnar Shuffle**: shuffles Gluten columnar data. The shuffle service still reuses the one in Spark core. A kind of columnar exchange operator is implemented to support Gluten columnar data format. -* **Fallback Mechanism**: supports falling back to Vanilla spark for unsupported operators. Gluten ColumnarToRow (C2R) and RowToColumnar (R2C) will convert Gluten columnar data and Spark's internal row data if needed. Both C2R and R2C are implemented in native code as well -* **Metrics**: collected from Gluten native engine to help identify bugs, performance bottlenecks, etc. The metrics are displayed in Spark UI. -* **Shim Layer**: supports multiple Spark versions. We plan to only support Spark's latest 2 or 3 releases. Currently, Spark-3.2, Spark-3.3 & Spark-3.4 (experimental) are supported. +## 3. User Guide -# 3. User Guide -Here is a basic configuration to enable Gluten in Spark. +Below is a basic configuration to enable Gluten in Spark. ``` export GLUTEN_JAR=/PATH/TO/GLUTEN_JAR @@ -74,89 +77,99 @@ spark-shell \ There are two ways to acquire Gluten jar for the above configuration. -### Use Released Jar -Please download a tar package [here](https://downloads.apache.org/incubator/gluten/), then extract out Gluten jar from it. -Additionally, Gluten offers nightly builds based on the main branch, which are available for early testing. You can find these release jars at this link: [Apache Gluten Nightlies](https://nightlies.apache.org/gluten/). -It was verified on Centos-7, Centos-8, Centos-9, Ubuntu-20.04 and Ubuntu-22.04. +### Use Released JAR + +Please download the tar package [here](https://downloads.apache.org/incubator/gluten/), then extract Gluten JAR from it. +Additionally, Gluten provides nightly builds based on the main branch for early testing. The nightly build JARs are available at [Apache Gluten Nightlies](https://nightlies.apache.org/gluten/). +They have been verified on Centos 7/8/9, Ubuntu 20.04/22.04. ### Build From Source + For **Velox** backend, please refer to [Velox.md](./docs/get-started/Velox.md) and [build-guide.md](./docs/get-started/build-guide.md). -For **ClickHouse** backend, please refer to [ClickHouse.md](./docs/get-started/ClickHouse.md). ClickHouse backend is developed by [Kyligence](https://kyligence.io/), please visit https://github.com/Kyligence/ClickHouse for more information. +For **ClickHouse** backend, please refer to [ClickHouse.md](./docs/get-started/ClickHouse.md). -Gluten jar will be generated under `/PATH/TO/GLUTEN/package/target/` after the build. +The Gluten JAR will be generated under `/PATH/TO/GLUTEN/package/target/` after the build. ### Configurations -Common configurations used by Gluten is listed in [Configuration.md](./docs/Configuration.md). Velox specific configurations is listed in [velox-configuration.md](./docs/velox-configuration.md) -Some of the spark configurations are hornored by Gluten Velox backend, some of them are ignored, and many are transparent to Gluten. The detail can be found in [velox-spark-configuration.md](./docs/velox-spark-configuration.md) and parquet write ones can be found in [velox-parquet-write-configuration.md](./docs/velox-parquet-write-configuration.md) +Common configurations used by Gluten are listed in [Configuration.md](./docs/Configuration.md). Velox specific configurations are listed in [velox-configuration.md](./docs/velox-configuration.md). + +The Gluten Velox backend honors some Spark configurations, ignores others, and many are transparent to it. See [velox-spark-configuration.md](./docs/velox-spark-configuration.md) for details, and [velox-parquet-write-configuration.md](./docs/velox-parquet-write-configuration.md) for Parquet write configurations. + +## 4. Resources +- [Gluten website](https://gluten.apache.org/) +- [Velox repository](https://github.com/facebookincubator/velox) +- [ClickHouse repository](https://github.com/Kyligence/ClickHouse) +- [Gluten Intro Video at Data AI Summit 2022](https://www.youtube.com/watch?v=0Q6gHT_N-1U) +- [Gluten Intro Article on Medium](https://medium.com/intel-analytics-software/accelerate-spark-sql-queries-with-gluten-9000b65d1b4e) +- [Gluten Intro Article on Kyligence.io (Chinese)](https://cn.kyligence.io/blog/gluten-spark/) +- [Velox Intro from Meta](https://engineering.fb.com/2023/03/09/open-source/velox-open-source-execution-engine/) + +## 5. Contribution + +Welcome to contribute to the Gluten project! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on how to make contributions. -# 4. Gluten Website -https://gluten.apache.org/ +## 6. Community -# 5. Contribution -Welcome to contribute to Gluten project! See [CONTRIBUTING.md](CONTRIBUTING.md) about how to make contributions. +Gluten successfully became an Apache Incubator project in March 2024. Here are several ways to connect with the community. -# 6. Community -Gluten successfully became Apache incubator project in March 2024. Here are several ways to contact us: +### GitHub -## GitHub -Welcome to report any issue or create any discussion related to Gluten in GitHub. Please do a search from GitHub issue list before creating a new one to avoid repetition. +Welcome to report issues or start discussions in GitHub. Please search the GitHub issue list before creating a new one to avoid duplication. -## Mail Lists -For any technical discussion, please send email to [dev@gluten.apache.org](mailto:dev@gluten.apache.org). You can go to [archives](https://lists.apache.org/list.html?dev@gluten.apache.org) -for getting historical discussions. Please click [here](mailto:dev-subscribe@gluten.apache.org) to subscribe the mail list. +### Mailing List -## Slack Channel (English communication) -Please click [here](https://github.com/apache/incubator-gluten/discussions/8429) to get invitation for ASF Slack workspace where you can find "incubator-gluten" channel. +For any technical discussions, please email [dev@gluten.apache.org](mailto:dev@gluten.apache.org). You can browse the [archives](https://lists.apache.org/list.html?dev@gluten.apache.org) +to view past discussions, or [subscribe to the mailing list](mailto:dev-subscribe@gluten.apache.org) to receive updates. + +### Slack Channel (English) + +Request an invitation to the ASF Slack workspace via [this page](https://github.com/apache/incubator-gluten/discussions/8429). Once invited, you can join the **incubator-gluten** channel. The ASF Slack login entry: https://the-asf.slack.com/. -## WeChat Group (Chinese communication) -For PRC developers/users, please contact weitingchen at apache.org or zhangzc at apache.org for getting invited to the WeChat group. +### WeChat Group (Chinese) + +Please contact weitingchen at apache.org or zhangzc at apache.org to request an invitation to the WeChat group. It is for Chinese-language communication. -# 7. Performance -We use Decision Support Benchmark1 (TPC-H like) to evaluate Gluten's performance. -Decision Support Benchmark1 is a query set modified from [TPC-H benchmark](http://tpc.org/tpch/default5.asp). We use Parquet file format for Velox testing & MergeTree file format for Clickhouse testing, compared to Parquet file format as baseline. See [Decision Support Benchmark1](./tools/workload/tpch). +## 7. Performance -The below test environment: single node with 2TB data; Spark-3.3.2 for both baseline and Gluten. The Decision Support Benchmark1 result (tested in Jun. 2023) shows an overall speedup of 2.71x and up to 14.53x speedup in a single query with Gluten Velox backend used. +[TPC-H](./tools/workload/tpch) is used to evaluate Gluten's performance. Please note that the results below do not reflect the latest performance. + +### Velox Backend + +The Gluten Velox backend demonstrated an overall speedup of 2.71x, with up to a 14.53x speedup observed in a single query. ![Performance](./docs/image/velox_decision_support_bench1_22queries_performance.png) -The below testing environment: a 8-nodes AWS cluster with 1TB data; Spark-3.1.1 for both baseline and Gluten. The Decision Support Benchmark1 result shows an average speedup of 2.12x and up to 3.48x speedup with Gluten Clickhouse backend. +Tested in Jun. 2023. Test environment: single node with 2TB data, using Spark 3.3.2 as the baseline and with Gluten integrated into the same Spark version. -![Performance](./docs/image/clickhouse_decision_support_bench1_22queries_performance.png) +### ClickHouse Backend -# 8. Qualification Tool +ClickHouse backend demonstrated an average speedup of 2.12x, with up to 3.48x speedup observed in a single query. -The Qualification Tool is a utility to analyze Spark event log files and assess the compatibility and performance of SQL workloads with Gluten. This tool helps users understand how their workloads can benefit from Gluten. +![Performance](./docs/image/clickhouse_decision_support_bench1_22queries_performance.png) -## Features -- Analyzes Spark SQL execution plans for compatibility with Gluten. -- Supports various types of event log files, including single files, folders, compressed files, and rolling event logs. -- Generates detailed reports highlighting supported and unsupported operations. -- Provides metrics on SQL execution times and operator impact. -- Offers configurable options such as threading, output directory, and date-based filtering. +Test environment: a 8-nodes AWS cluster with 1TB data, using Spark 3.1.1 as the baseline and with Gluten integrated into the same Spark version. -## Usage +## 8. Qualification Tool -To use the Qualification Tool, follow the instructions in its [README](tools/qualification-tool/README.MD). +The [Qualification Tool](./tools/qualification-tool/README.md) is a utility to analyze Spark event log files and assess the compatibility and performance of SQL workloads with Gluten. This tool helps users understand how their workloads can benefit from Gluten. -## Example Command -```bash -java -jar target/qualification-tool-1.3.0-SNAPSHOT-jar-with-dependencies.jar -f /path/to/eventlog -``` -For detailed usage instructions and advanced options, see the Qualification Tool README. +## 9. License -# 9. License Gluten is licensed under [Apache 2.0 license](https://www.apache.org/licenses/LICENSE-2.0). -# 10. Acknowledgements -Gluten was initiated by Intel and Kyligence in 2022. Several companies are also actively participating in the development, such as BIGO, Meituan, Alibaba Cloud, NetEase, Baidu, Microsoft, IBM, Google, etc. +## 10. Acknowledgements + +Gluten was initiated by Intel and Kyligence in 2022. Several other companies are also actively contributing to its development, including BIGO, Meituan, Alibaba Cloud, NetEase, Baidu, Microsoft, IBM, Google, etc. -##### \* LEGAL NOTICE: Your use of this software and any required dependent software (the "Software Package") is subject to the terms and conditions of the software license agreements for the Software Package, which may also include notices, disclaimers, or license terms for third party or open source software included in or with the Software Package, and your use indicates your acceptance of all such terms. Please refer to the "TPP.txt" or other similarly-named text file included with the Software Package for additional details. +\* LEGAL NOTICE: Your use of this software and any required dependent software (the "Software Package") is subject to the terms and conditions of the software license agreements for the Software Package, +which may also include notices, disclaimers, or license terms for third party or open source software included in or with the Software Package, and your use indicates your acceptance of all such terms. +Please refer to the "TPP.txt" or other similarly-named text file included with the Software Package for additional details. diff --git a/docs/developers/NewToGluten.md b/docs/developers/NewToGluten.md index 12c18d9b3b71..3262f985f0db 100644 --- a/docs/developers/NewToGluten.md +++ b/docs/developers/NewToGluten.md @@ -4,125 +4,92 @@ title: New To Gluten nav_order: 2 parent: Developer Overview --- -Help users to debug and test with Gluten. -# Environment +# Guide for New Developers -Gluten supports Ubuntu20.04, Ubuntu22.04, CentOS8, CentOS7 and MacOS. +## Environment -## JDK +Gluten supports Ubuntu 20.04/22.04, CentOS 7/8, and MacOS. -Currently, Gluten supports JDK 8 for Spark 3.2/3.3/3.4/3.5. For Spark 3.3 and higher versions, Gluten -supports JDK 11 and 17. Please note since Spark 4.0, JDK 8 will not be supported. So we recommend Velox -backend users to use higher JDK version now to ease the migration for deploying Gluten with Spark-4.0 -in the future. And we may probably upgrade Arrow from 15.0.0 to some higher version, which also requires -JDK 11 is the minimum version. +### JDK -### JDK 8 +Gluten supports JDK 8 for Spark 3.2, 3.3, 3.4, and 3.5. For Spark 3.3 and later versions, Gluten +also supports JDK 11 and 17. -#### Environment Setting +Note: Starting with Spark 4.0, the minimum required JDK version is 17. +We recommend using a higher JDK version now to ease migration when deploying Gluten for Spark 4.0 +in the future. In addition, we may upgrade Arrow from 15.0.0 to a newer release, which will require +JDK 11 as the minimum version. -For root user, the environment variables file is `/etc/profile`, it will take effect for all the users. +By default, Gluten compiles packages using JDK 8. Enable maven profile by `-Pjava-17` or `-Pjava-11` to use the corresponding JDK version, and ensure that the JDK version is available in your environment. -For other user, you can set in `~/.bashrc`. +If JDK 11 or a higher version is used, Spark and Arrow require setting the java args `-Dio.netty.tryReflectionSetAccessible=true`, see [SPARK-29924](https://issues.apache.org/jira/browse/SPARK-29924) and [ARROW-6206](https://issues.apache.org/jira/browse/ARROW-6206). -#### Guide for Ubuntu - -The default JDK version in ubuntu is java11, we need to set to java8. - -```bash -apt install openjdk-8-jdk -update-alternatives --config java -java -version -``` - -`--config java` to config java executable path, `javac` and other commands can also use this command to config. -For some other uses, we suggest to set `JAVA_HOME`. - -```bash -export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ -JRE_HOME=$JAVA_HOME/jre -export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar -# pay attention to $PATH double quote -export PATH="$PATH:$JAVA_HOME/bin" -``` - -> Must set PATH with double quote in ubuntu. - -### JDK 11/17 - -By default, Gluten compiles package using JDK8. Enable maven profile by `-Pjava-17` to use JDK17 or `-Pjava-11` to use JDK 11, and please make sure your JAVA_HOME is set correctly. - -Apache Spark and Arrow requires setting java args `-Dio.netty.tryReflectionSetAccessible=true`, see [SPARK-29924](https://issues.apache.org/jira/browse/SPARK-29924) and [ARROW-6206](https://issues.apache.org/jira/browse/ARROW-6206). -So please add following configs in `spark-defaults.conf`: +Add the following configs in `spark-defaults.conf`: ``` spark.driver.extraJavaOptions=-Dio.netty.tryReflectionSetAccessible=true spark.executor.extraJavaOptions=-Dio.netty.tryReflectionSetAccessible=true ``` -## Maven 3.6.3 or above +### Maven + +Gluten requires Maven 3.6.3 or above. -[Maven Download Page](https://maven.apache.org/docs/history.html) -And then set the environment setting. +### GCC -## GCC 11 or above +Gluten requires GCC 11 or above. -# Compile Gluten using debug mode +## Development -If you want to just debug java/scala code, there is no need to compile cpp code with debug mode. -You can just refer to [build-gluten-with-velox-backend](../get-started/Velox.md#build-gluten-with-velox-backend). +To debug Java/Scala code, follow the steps in [build-gluten-with-velox-backend](../get-started/Velox.md#build-gluten-with-velox-backend). -If you need to debug cpp code, please compile the backend code and gluten cpp code with debug mode. +To debug C++ code, compile the backend code and gluten C++ code in debug mode. ```bash ## compile Velox backend with benchmark and tests to debug gluten_home/dev/builddeps-veloxbe.sh --build_tests=ON --build_benchmarks=ON --build_type=Debug ``` -If you need to debug the tests in /gluten-ut, You need to compile java code with `-P spark-ut`. +Note: To debug the tests under `/gluten-ut/`, you must compile java code with `-Pspark-ut`. -# Java/scala code development with Intellij +### Java/scala code development -## Linux IntelliJ local debug +#### Linux IntelliJ local debug Install the Linux IntelliJ version, and debug code locally. - Ask your linux maintainer to install the desktop, and then restart the server. -- If you use Moba-XTerm to connect linux server, you don't need to install x11 server, If not (e.g. putty), please follow this guide: -[X11 Forwarding: Setup Instructions for Linux and Mac](https://www.businessnewsdaily.com/11035-how-to-use-x11-forwarding.html) +- If you use Moba-XTerm to connect, you don't need to install x11 server. If you are using another tool, such as putty, follow this guide: + [X11 Forwarding: Setup Instructions for Linux and Mac](https://www.businessnewsdaily.com/11035-how-to-use-x11-forwarding.html) -- Download [IntelliJ Linux community version](https://www.jetbrains.com/idea/download/?fromIDE=#section=linux) to Linux server -- Start Idea, `bash /idea.sh` +- Download [IntelliJ Linux community version](https://www.jetbrains.com/idea/download/?fromIDE=#section=linux) to Linux server. +- Start Idea using the following command: -## Set up Gluten project + `bash /idea.sh` + +#### Set up Gluten project - Make sure you have compiled Gluten. -- Load the Gluten by File->Open, select . -- Activate your profiles such as , and Reload Maven Project, you will find all your need modules have been activated. -- Create breakpoint and debug as you wish, maybe you can try `CTRL+N` to find `TestOperator` to start your test. +- Load the Gluten by **File**->**Open**, select ****. +- Activate your profiles such as ``, then **Reload Maven Project** to activate all the needed modules. +- Create breakpoints and debug as you wish. You can use `CTRL+N` to locate a test class to start your test. -## Java/Scala code style +#### Java/Scala code style IntelliJ supports importing settings for Java/Scala code style. You can import [intellij-codestyle.xml](../../dev/intellij-codestyle.xml) to your IDE. See [IntelliJ guide](https://www.jetbrains.com/help/idea/configuring-code-style.html#import-code-style). -To generate a fix for Java/Scala code style, you can run one or more of the below commands according to the code modules involved in your PR. +To format Java/Scala code using the [Spotless](https://github.com/diffplug/spotless) plugin, run the following command: -For Velox backend: -``` -mvn spotless:apply -Pbackends-velox -Pceleborn -Puniffle -Pspark-3.2 -Pspark-ut -DskipTests -mvn spotless:apply -Pbackends-velox -Pceleborn -Puniffle -Pspark-3.3 -Pspark-ut -DskipTests ``` -For Clickhouse backend: -``` -mvn spotless:apply -Pbackends-clickhouse -Pspark-3.2 -Pspark-ut -DskipTests -mvn spotless:apply -Pbackends-clickhouse -Pspark-3.3 -Pspark-ut -DskipTests +./dev/format-scala-code.sh ``` -# CPP code development with Visual Studio Code +### C++ code development + +This guide is for remote debugging by connecting to the remote Linux server using `SSH`. -This guide is for remote debug. We will connect the remote linux server by `SSH`. Download and install [Visual Studio Code](https://code.visualstudio.com/Download). Key components found on the left side bar are: @@ -130,32 +97,35 @@ Key components found on the left side bar are: - Search - Run and Debug - Extensions (Install the C/C++ Extension Pack, Remote Development, and GitLens. C++ Test Mate is also suggested.) -- Remote Explorer (Connect linux server by ssh command, click `+`, then input `ssh user@10.1.7.003`) +- Remote Explorer (To connect to the linux server using ssh, click **+**, then enter `ssh USERNAME@REMOTE_SERVER_IP_ADDRESS`) - Manage (Settings) -Input your password in the above pop-up window, it will take a few minutes to install linux vscode server in remote machine folder `~/.vscode-server` -If download failed, delete this folder and try again. +Input your password in the above pop-up window. It will take a few minutes to install the Linux VSCode server in the folder `~/.vscode-server` on the remote machine. -## Usage +If the download fails, delete this folder and try again. -### Set up project +Note: If VSCode is upgraded, you must download the linux server again. We recommend switching the update mode to `off`. Search `update` in **Manage**->**Settings** to turn off update mode. -- File->Open Folder // select the Gluten folder -- After the project loads, you will be prompted to "Select CMakeLists.txt". Select the +#### Set up project + +- Select **File**->**Open Folder**, then select the Gluten folder. +- After the project loads, you will be prompted to **Select CMakeLists.txt**. Select the `${workspaceFolder}/cpp/CMakeLists.txt` file. -- Next, you will be prompted to "Select a Kit" for the Gluten project. Select GCC 11 or above. +- Next, you will be prompted to **Select a Kit** for the Gluten project. Select **GCC 11** or above. + +#### Settings -### Settings +VSCode supports two ways to configure user settings. -VSCode supports 2 ways to set user setting. +- **Manage**->**Command Palette** (Open `settings.json`, search by `Preferences: Open Settings (JSON)`) +- **Manage**->**Settings** (Common setting) -- Manage->Command Palette (Open `settings.json`, search by `Preferences: Open Settings (JSON)`) -- Manage->Settings (Common setting) +#### Build using VSCode -### Build using VSCode +VSCode will try to compile using debug mode in `/build`. You must compile Velox debug mode before +compiling Gluten. -VSCode will try to compile using debug mode in /build. We need to compile Velox debug mode before -compiling Gluten. If you have previously compiled Velox in release mode, use the command below to compile in debug mode. +Note: If you have previously compiled Velox in release mode, use the command below to compile in debug mode. ```bash cd incubator-gluten/ep/build-velox/build/velox_ep @@ -165,11 +135,12 @@ make debug EXTRA_CMAKE_FLAGS="-DVELOX_ENABLE_PARQUET=ON -DENABLE_HDFS=ON -DVELOX ``` Then Gluten will link the Velox debug library. -Just click `build` in bottom bar, you will get intellisense search and link. -### Debug +Click **build** in the bottom bar to enable IntelliSense features like search and navigation. -The default compile command does not enable test and benchmark, so we don't get any executable files. +#### Debug setting + +The default compile command does not enable tests and benchmarks, so the corresponding executable files are not generated. To enable the test and benchmark args, create or edit the `/.vscode/settings.json` to add the configurations below: @@ -183,115 +154,25 @@ configurations below: } ``` -After compiling with these updated configs, you should have executable files (such as -`/cpp/build/velox/tests/velox_shuffle_writer_test`). - -Open the `Run and Debug` panel (Ctrl-Shift-D) and then click the link to create a launch.json file. If prompted, -select a debugger like "C++ (GDB/LLDB)". The launch.json will be created at: `/.vscode/launch.json`. - -Click the `Add Configuration` button in launch.json, and select gdb "launch" (to start and debug a program) or -"attach" (to attach and debug a running program). - -#### launch.json example - -```json -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "name": "velox shuffle writer test", - "type": "cppdbg", - "request": "launch", - "program": "${workspaceFolder}/cpp/build/velox/tests/velox_shuffle_writer_test", - "args": ["--gtest_filter='*SinglePartitioningShuffleWriter*'"], - "stopAtEntry": false, - "cwd": "${fileDirname}", - "environment": [], - "externalConsole": false, - "MIMode": "gdb", - "setupCommands": [ - { - "description": "Enable pretty-printing for gdb", - "text": "-enable-pretty-printing", - "ignoreFailures": true - }, - { - "description": "Set Disassembly Flavor to Intel", - "text": "-gdb-set disassembly-flavor intel", - "ignoreFailures": true - } - ] - }, - { - "name": "benchmark test", - "type": "cppdbg", - "request": "launch", - "program": "${workspaceFolder}/cpp/build/velox/benchmarks/./generic_benchmark", - "args": [ - "--threads=1", - "--with-shuffle", - "--partitioning=hash", - "--iterations=1", - "--conf=${workspaceFolder}/backends-velox/generated-native-benchmark/conf_12_0_2.ini", - "--plan=${workspaceFolder}/backends-velox/generated-native-benchmark/plan_12_0_2.json", - "--data=${workspaceFolder}/backends-velox/generated-native-benchmark/data_12_0_2_0.parquet,${workspaceFolder}/backends-velox/generated-native-benchmark/data_12_0_2_1.parquet" - ], - "stopAtEntry": false, - "cwd": "${fileDirname}", - "environment": [], - "externalConsole": false, - "MIMode": "gdb", - "setupCommands": [ - { - "description": "Enable pretty-printing for gdb", - "text": "-enable-pretty-printing", - "ignoreFailures": true - }, - { - "description": "Set Disassembly Flavor to Intel", - "text": "-gdb-set disassembly-flavor intel", - "ignoreFailures": true - } - ] - } - - ] -} -``` - -> Change `name`, `program`, `args` for your environment. For example, your generated benchmark example file names may vary. +After compiling with these updated configs, you should have executable files, such as +`/cpp/build/velox/tests/velox_shuffle_writer_test`. -Then you can create breakpoint and debug in `Run and Debug` section. +Open the **Run and Debug** panel (Ctrl-Shift-D) and then click the link to create a `launch.json` file. If prompted, +select a debugger like **C++ (GDB/LLDB)**. The `launch.json` will be created under `/.vscode/`. -### Velox debug +Note: Change `name`, `program`, `args` for your environment. -For some Velox tests such as `ParquetReaderTest`, tests need to read the parquet file in `/velox/dwio/parquet/tests/examples`, -you should let the screen on `ParquetReaderTest.cpp`, then click `Start Debugging`, otherwise `No such file or directory` exception will be raised. +Click the **Add Configuration** button in `launch.json`, and select gdb **launch** to start a program for debugging or +**attach** to attach a running program for debugging. -## Useful notes +Then you can create breakpoints and debug using **Run and Debug** in Visual Studio Code. -### Do not upgrade vscode +#### Debug Velox code -No need to upgrade vscode version, if upgraded, will download linux server again, switch update mode to off -Search `update` in Manage->Settings to turn off update mode. +For some Velox tests such as `ParquetReaderTest`, tests need to read the parquet file in `/velox/dwio/parquet/tests/examples`. +Select `ParquetReaderTest.cpp` in the IDE window, then click **Start Debugging**, otherwise `No such file or directory` exception will be raised. -### Colour setting - -```json -"workbench.colorTheme": "Quiet Light", - "files.autoSave": "afterDelay", - "workbench.colorCustomizations": { - "editor.wordHighlightBackground": "#063ef7", - // "editor.selectionBackground": "#d1d1c6", - // "tab.activeBackground": "#b8b9988c", - "editor.selectionHighlightBackground": "#c5293e" - }, -``` - -### Clang format +#### Clang format Gluten uses clang-format 15 to format source files. @@ -306,34 +187,34 @@ Set config in `settings.json` "editor.formatOnSave": true, ``` -If exists multiple clang-format version, formatOnSave may not take effect, specify the default formatter -Search `default formatter` in `Settings`, select Clang-Format. +If multiple clang-format versions are installed, `formatOnSave` may not take effect. To specify the default formatter, +search for `default formatter` in **Settings**, then select **Clang-Format**. -If your formatOnSave still make no effect, you can use shortcut `SHIFT+ALT+F` to format one file manually. +If `formatOnSave` still has no effect, select a single file and use `SHIFT+ALT+F` to format it manually. -### CMake format +#### CMake format -To format cmake files, like CMakeLists.txt & *.cmake, please install `cmake-format`. +To format cmake files like `CMakeLists.txt` and `*.cmake`, install `cmake-format`. ``` pip3 install --user cmake-format ``` -Here is an example to format a file in command line. +Here is an example of how to format a file using the command line: ``` cmake-format --first-comment-is-literal True --in-place cpp/velox/CMakeLists.txt ``` After the above installation, you can optionally do some configuration in Visual Studio Code to easily format cmake files. 1. Install `cmake-format` extension in Visual Studio Code. -2. Configure the extension. To do this, open the settings (File -> Preferences -> Settings), search for `cmake-format`, - and do the below settings: - * Set Args: `--first-comment-is-literal=True`. - * Set Exe Path to the path of the `cmake-format` command. If you installed `cmake-format` in a standard +2. Configure the extension. To do this, open the settings (**File** -> **Preferences** -> **Settings**), search for `cmake-format`, + and configure the following settings as shown: + * Set **Args**: `--first-comment-is-literal=True`. + * Set **Exe Path** to the path of the `cmake-format` command. If you installed `cmake-format` in a standard location, you might not need to change this setting. -3. Now, you can format your CMake files by right-clicking in a file and selecting `Format Document`. +3. Format your CMake files by right-clicking in a file and selecting `Format Document`. -### Add UT +#### Add unit tests -1. For Native Code Modifications: If you have modified native code, it is best to use gtest to test the native code. +1. For Native Code Modifications: If you have modified native code, use gtest to test the native code. A secondary option is to add Gluten UT to ensure coverage. 2. For Gluten-Related Code Modifications: If you have modified code related to Gluten, it is preferable to add scalatest rather than JUnit. @@ -345,26 +226,24 @@ After the above installation, you can optionally do some configuration in Visual 4. Placement of Non-Native Code UTs: Ensure that unit tests for non-native code are placed within org.apache.gluten and org.apache.spark packages. This is important because the CI system runs unit tests from these two paths in parallel. Placing tests in other paths might cause your tests to be ignored. -### View surefire reports of Velox ut in GHA +#### View Surefire reports of Scala unit tests in GHA Surefire reports are invaluable tools in the ecosystem of Java-based applications that utilize the Maven build automation tool. These reports are generated by the Maven Surefire Plugin during the testing phase of your build process. They compile results from unit tests, providing detailed insights into which tests passed or failed, what errors were encountered, and other essential metrics. Surefire reports play a crucial role in the development and maintenance of high-quality software. -We provide surefire reports of Velox ut in GHA, and developers can leverage surefire reports with early bug detection and quality assurance. - -You can check surefire reports: +In GitHub Actions, we expose Surefire test reports so developers can review error messages and stack traces from failing unit tests. -1. Click `Checks` Tab in PR; +To check Surefire reports: -2. Find `Report test results` in `Dev PR`; - -3. Then, developers can check the result with summary and annotations. +1. Click the **Checks** Tab in PR. +2. Find **Report test results** in **Dev PR**. +3. There, you can check the results with summary and annotations. ![](../image/surefire-report.png) -# Debug cpp code with coredump +## Debug C++ Code with Core Dump ```bash mkdir -p /mnt/DP_disk1/core @@ -377,7 +256,7 @@ echo "ulimit -c unlimited" >> ~/.bashrc # gdb /cpp/build/releases/libgluten.so 'core-Executor task l-2000883-1671542526' ``` -'core-Executor task l-2000883-1671542526' is the generated core file name. +`core-Executor task l-2000883-1671542526` is the generated core file name. ```bash (gdb) bt @@ -391,7 +270,7 @@ echo "ulimit -c unlimited" >> ~/.bashrc - Print the variable in a more readable way - Print the variable fields -Sometimes you only get the cpp exception message, you can generate core dump file by the following code: +Sometimes you only get the C++ exception message. If that happens, you can generate a core dump file by running the following code: ```cpp char* p = nullptr; *p = 'a'; @@ -400,10 +279,9 @@ or by the following commands: - `gcore ` - `kill -s SIGSEGV ` -# Debug cpp with gdb +## Debug C++ with GDB -You can use gdb to debug tests and benchmarks. -And also you can debug jni call. +You can use GDB to debug tests, benchmarks, and JNI calls. Place the following code to your debug path. ```cpp @@ -420,7 +298,7 @@ jps ps ux | grep TestOperator ``` -Execute gdb command to debug: +Execute GDB command to debug: ```bash gdb attach ``` @@ -432,17 +310,17 @@ wait to attach.... (gdb) c ``` -# Debug Memory leak +## Debug Memory Leaks -## Arrow memory allocator leak +### Arrow memory allocator leak -If you receive error message like +If you receive an error message like the following: ```bash 4/04/18 08:15:38 WARN ArrowBufferAllocators$ArrowBufferAllocatorManager: Detected leaked Arrow allocator [Default], size: 191, process accumulated leaked size: 191... 24/04/18 08:15:38 WARN ArrowBufferAllocators$ArrowBufferAllocatorManager: Leaked allocator stack Allocator(ROOT) 0/191/319/9223372036854775807 (res/actual/peak/limit) ``` -You can open the Arrow allocator debug config by add VP option `-Darrow.memory.debug.allocator=true`, then you can get more details like +You can open the Arrow allocator debug config by adding the VP option `-Darrow.memory.debug.allocator=true`. That gives you more details, like the following example: ```bash child allocators: 0 @@ -470,49 +348,43 @@ child allocators: 0 at org.apache.spark.memory.SparkMemoryUtil$UnsafeItr.hasNext(SparkMemoryUtil.scala:246) ``` -## CPP code memory leak +### CPP code memory leak -Sometimes you cannot get the coredump symbols, if you debug memory leak, you can write googletest to use valgrind to detect +Sometimes you cannot get the coredump symbols when debugging a memory leak. You can write a GoogleTest to use valgrind for detection. ```bash apt install valgrind valgrind --leak-check=yes ./exec_backend_test ``` +## Run TPC-H and TPC-DS -# Run TPC-H and TPC-DS - -We supply `/tools/gluten-it` to execute these queries -Refer to [velox_backend.yml](https://github.com/apache/incubator-gluten/blob/main/.github/workflows/velox_backend.yml) +We supply `/tools/gluten-it` to execute these queries. +See [velox_backend_x86.yml](https://github.com/apache/incubator-gluten/blob/main/.github/workflows/velox_backend_x86.yml). -# Run Gluten+Velox on clean machine +## Enable Gluten for Spark -We can run Gluten + Velox on clean machine by one command (supported OS: Ubuntu20.04/22.04, CentOS 7/8, etc.). +To enable Gluten Velox backend for Spark, run the following command: ``` spark-shell --name run_gluten \ --master yarn --deploy-mode client \ --conf spark.plugins=org.apache.gluten.GlutenPlugin \ --conf spark.memory.offHeap.enabled=true \ --conf spark.memory.offHeap.size=20g \ - --jars https://github.com/apache/incubator-gluten/releases/download/v1.1.1/gluten-velox-bundle-spark3.2_2.12-1.1.1.jar \ + --jars https://dlcdn.apache.org/incubator/gluten/1.4.0-incubating/apache-gluten-1.4.0-incubating-bin-spark35.tar.gz \ --conf spark.shuffle.manager=org.apache.spark.shuffle.sort.ColumnarShuffleManager ``` -# Check Gluten Approved Spark Plan +## Gluten Plan Validation and Updates -To make sure we don't accidentally modify the Gluten and Spark Plan build logic. -We introduce new logic in `VeloxTPCHSuite` to check whether the plan has been changed or not, -and this will be triggered when running the unit test. +`VeloxTPCHSuite` can verify the executed Gluten plans for the TPC-H benchmark to avoid unintentional changes. +This verification is based on comparisons with the golden files that record the expected Gluten plans. -As a result, developers may encounter unit test fail in Github CI or locally, with the following error message: +The following failure may occur in GitHub CI or local tests: ```log - TPC-H q5 *** FAILED *** Mismatch for query 5 Actual Plan path: /tmp/tpch-approved-plan/v2-bhj/spark322/5.txt Golden Plan path: /opt/gluten/backends-velox/target/scala-2.12/test-classes/tpch-approved-plan/v2-bhj/spark322/5.txt (VeloxTPCHSuite.scala:101) ``` -For developers to update the golden plan, you can find the actual plan in Github CI Artifacts or in local `/tmp/` directory. - -![](../image/gluten_golden_file_upload.png) - -Developers can simply copy the actual plan to the golden plan path, and then re-run the unit test to make sure the plan is stabled. +To update the golden files, find the actual Gluten plans in GitHub CI Artifacts or the local `/tmp/` directory, then update the corresponding golden files in the `tpch-approved-plan/` directory. diff --git a/docs/image/gluten_golden_file_upload.png b/docs/image/gluten_golden_file_upload.png deleted file mode 100644 index c142fbe2af949e9971cebef26b1d3d38e47fc482..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 175664 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
  • !wub{xaN*+_QOF46fzSY;!BmG3dL_}f` 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 IW7ClT1MExZMF0Q* diff --git a/tools/qualification-tool/README.MD b/tools/qualification-tool/README.md similarity index 100% rename from tools/qualification-tool/README.MD rename to tools/qualification-tool/README.md From ddcb30aa9db7d6399a735adda992447db5bb2aca Mon Sep 17 00:00:00 2001 From: PHILO-HE Date: Wed, 1 Oct 2025 16:11:08 +0800 Subject: [PATCH 2/2] [GLUTEN-9615][INFRA] Automate release process with build script and GHA workflow (#10807) Use GHA to build Gluten jars for supported Spark versions, which can simplify the release process and ensure all required build options are enabled, avoiding potential omissions in manual builds. --- .github/workflows/build_release.yml | 42 ++++++++++++++++++ dev/release/build-release.sh | 66 +++++++++++++++++++++++++++++ dev/release/package-release.sh | 63 +++++++++++++++++++++++++++ 3 files changed, 171 insertions(+) create mode 100644 .github/workflows/build_release.yml create mode 100755 dev/release/build-release.sh create mode 100755 dev/release/package-release.sh diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml new file mode 100644 index 000000000000..cec50c92b1f4 --- /dev/null +++ b/.github/workflows/build_release.yml @@ -0,0 +1,42 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: Build Release + +# Only triggered when new tag like v1.5.0 is created. +on: + push: + tags: + - 'v*' + +jobs: + build-velox-backend-release: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Build + run: | + docker pull apache/gluten:vcpkg-centos-7 + docker run -v $GITHUB_WORKSPACE:/workspace -w /work apache/gluten:vcpkg-centos-7 bash -c " + set -e + cd /workspace + bash dev/release/build-release.sh + " + - name: Upload packages + if: ${{ success() }} + uses: actions/upload-artifact@v4 + with: + name: ${{ github.job }}-packages + path: ${{ github.workspace }}/package/target/gluten-velox-bundle-*.jar diff --git a/dev/release/build-release.sh b/dev/release/build-release.sh new file mode 100755 index 000000000000..ec4a509c729d --- /dev/null +++ b/dev/release/build-release.sh @@ -0,0 +1,66 @@ +#!/bin/bash + +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -eu + +source /opt/rh/devtoolset-11/enable +source /opt/rh/rh-git227/enable + +CURRENT_DIR=$(cd "$(dirname "$BASH_SOURCE")"; pwd) +GLUTEN_HOME=${CURRENT_DIR}/../../ +cd ${GLUTEN_HOME} + +# Enable static build with support for S3, GCS, HDFS, and ABFS. +./dev/builddeps-veloxbe.sh --enable_vcpkg=ON --build_arrow=OFF --build_tests=OFF --build_benchmarks=OFF \ + --build_examples=OFF --enable_s3=ON --enable_gcs=ON --enable_hdfs=ON --enable_abfs=ON + +JAVA_VERSION=$("java" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +if [[ $JAVA_VERSION == 1.8* ]]; then + echo "Java 8 is being used." +else + echo "Error: Java 8 is required. Current version is $JAVA_VERSION." + exit 1 +fi + +# Build Gluten for Spark 3.2 and 3.3 with Java 8. All feature modules are enabled. +for spark_version in 3.2 3.3 +do + mvn clean install -Pbackends-velox -Pspark-${spark_version} -Pceleborn,uniffle \ + -Piceberg,delta,hudi,paimon -DskipTests +done + +sudo curl -Lo /etc/yum.repos.d/corretto.repo https://yum.corretto.aws/corretto.repo +sudo yum install -y java-17-amazon-corretto-devel +export JAVA_HOME=/usr/lib/jvm/java-17-amazon-corretto +export PATH=$JAVA_HOME/bin:$PATH + +JAVA_VERSION=$("java" -version 2>&1 | awk -F '"' '/version/ {print $2}') +if [[ $JAVA_VERSION == 17* ]]; then + echo "Java 17 is being used." +else + echo "Error: Java 17 is required. Current version is $JAVA_VERSION." + exit 1 +fi + +# Build Gluten for Spark 3.4 and 3.5 with Java 17. The version of Iceberg being used requires Java 11 or higher. +# All feature modules are enabled. +for spark_version in 3.4 3.5 +do + mvn clean install -Pjava-17 -Pbackends-velox -Pspark-${spark_version} -Pceleborn,uniffle \ + -Piceberg,delta,hudi,paimon -DskipTests +done diff --git a/dev/release/package-release.sh b/dev/release/package-release.sh new file mode 100755 index 000000000000..bb0de30259c7 --- /dev/null +++ b/dev/release/package-release.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Note: Manually create $GLUTEN_HOME/release/ and place the release JARs inside. +# Also set TAG manually (e.g., v1.5.0). + +set -eu + +TAG="" + +if [[ -z "$TAG" ]]; then + echo "TAG is not set. Please set TAG=vX.Y.Z before running." + exit 1 +fi + +VERSION=${TAG#v} + +CURRENT_DIR=$(cd "$(dirname "$BASH_SOURCE")"; pwd) +GLUTEN_HOME=${CURRENT_DIR}/../../ +if [ ! -d "$GLUTEN_HOME/release/" ]; then + echo "Release directory does not exist." +fi +pushd $GLUTEN_HOME/release/ + +SPARK_VERSIONS="3.2 3.3 3.4 3.5" + +for v in $SPARK_VERSIONS; do + JAR="gluten-velox-bundle-spark${v}_2.12-linux_amd64-${VERSION}.jar" + if [[ ! -f "$JAR" ]]; then + echo "Missing Gluten release JAR under $GLUTEN_HOME/release/ for Spark $v: $JAR" + exit 1 + fi + echo "Packaging for Spark $v..." + tar -czf apache-gluten-$VERSION-incubating-bin-spark-${v}.tar.gz \ + ${GLUTEN_HOME}/DISCLAIMER \ + $JAR +done + +SRC_ZIP="${TAG}.zip" +SRC_DIR="incubator-gluten-${VERSION}" + +echo "Packaging source code..." +wget https://github.com/apache/incubator-gluten/archive/refs/tags/${SRC_ZIP} +unzip -q ${SRC_ZIP} +tar -czf apache-gluten-$VERSION-incubating-src.tar.gz ${SRC_DIR} +rm -r ${SRC_ZIP} ${SRC_DIR} + +popd +echo "Finished packaging release binaries and source code."