Install SystemDS from a Release

This guide explains how to install and set up SystemDS using the pre-built release archives.



1. Download a Release

Download the official release archive from the Apache SystemDS website:

https://systemds.apache.org/download/

After downloading the file systemds-<VERSION>.tar.gz, place the file in any directory you choose for installation.

Java Requirement

For compatability with Spark execution and parser components, Java 17 is strongly recommended for SystemDS.

Verify Java 17:

java -version

If missing, install a JDK 17 distribution.


2. Install on Windows

2.1 Extract the Release Archive

Use Windows built-in extractor.

2.2 Verify the Installation by Checking the CLI

On Windows, the systemdsCLI wrapper may not be executable. This is expected because the bin/systemdslauncher is implemented as a shell script, which Windows cannot execute natively. To verify the installation on Windows, navigate to the bin directory and run the JAR directly. Note that running systemds -help without JAR may result in a CommandNotFoundExeption:

java -jar systemds-<VERSION>.jar -help

You should see usage information as an output printed to the console.

2.3 Create a Simple Script

On Windows, especially when using PowerShell, creating text files via shell redirection (e.g., echo…) may result in unexpected encoding or invisible characters. This can lead to parsing errors when executing the script, even though the file appears correct in an editor. Therefore, you may try creating the file explicitly using PowerShell:

Set-Content -Path .\hello.dml -Value 'print("Hello World!")' -Encoding Ascii

This ensures the script is stored as plain text without additional encoding metadata. Note: This behavior depends on the shell and environment configuration and may not affect all Windows setups.

Verify the file contents:

Get-Content .\hello.dml

Expected output:

print("Hello World!")

2.4 Run the Script

Now run the script:

java -jar systemds-3.3.0.jar -f .\hello.dml

Expected output:

Hello World!
SystemDS Statistics:
Total execution time: 0.012 sec.

3. Install on Ubuntu

3.1 Extract the Release

cd /path/to/install
tar -xvf systemds-<VERSION>-bin.tgz
cd systemds-<VERSION>-bin

3.2 Configure Environment Variables

The SystemDS CLI requires an environment variable pointing to the SystemDS JAR. Make sure to export both SYSTEMDS_ROOT and SYSTEMDS_JAR_FILE.

export SYSTEMDS_ROOT=$(pwd)
export SYSTEMDS_JAR_FILE=$(find "$SYSTEMDS_ROOT" -maxdepth 1 -type f -name "systemds-*.jar" | head -n 1)
export PATH="$SYSTEMDS_ROOT/bin:$PATH"

Verify that the JAR was found correctly:

echo "Using SystemDS JAR: $SYSTEMDS_JAR_FILE"

(Optional but recommended) To make SystemDS available in new terminals, add the following lines to your shell configuration (e.g., ~/.bashrc or ~/.profile):

export SYSTEMDS_ROOT=/absolute/path/to/systemds-<VERSION>
export SYSTEMDS_JAR_FILE=/absolute/path/to/systemds-<VERSION>-bin/lib/systemds-<VERSION>.jar
export PATH="$SYSTEMDS_ROOT/bin:$PATH"

3.3 Verify the Installation by Checking the CLI

systemds -help

You should see usage information printed to the console.

3.4 Create a Simple Script

echo 'print("Hello World!")' > hello.dml

3.5 Run the Script

With SYSTEMDS_JAR_FILE properly set, the script can be executed directly via the CLI:

systemds -f hello.dml

Expected output:

Hello World!

4. Install on MacOS

4.1 Extract the Release

cd /path/to/install
tar -xvf systemds-<VERSION>-bin.tgz
cd systemds-<VERSION>-bin

4.2 Add SystemDS to PATH

export SYSTEMDS_ROOT=$(pwd)
export PATH="$SYSTEMDS_ROOT/bin:$PATH"

(Optional but recommended) To make SystemDS available in new terminals, add the following lines to your shell configuration (e.g., ~/.bashrc or ~/.profile):

export SYSTEMDS_ROOT=/absolute/path/to/systemds-<VERSION>
export PATH=$SYSTEMDS_ROOT/bin:$PATH

4.3 Verify the Installation by Checking the CLI

systemds -help

You should see usage information printed to the console.

4.4 Create a Simple Script

echo 'print("Hello World!")' > hello.dml

4.5 Run the Script

systemds -f hello.dml

Expected output:

Hello World!

Next Steps

For running scripts in Spark mode or experimenting with federated workers, see the Execution Guide: Execute SystemDS