This guide explains how to install and set up SystemDS using the pre-built release archives.
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.
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.
Use Windows built-in extractor.
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.
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!")
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.
cd /path/to/install tar -xvf systemds-<VERSION>-bin.tgz cd systemds-<VERSION>-bin
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"
systemds -help
You should see usage information printed to the console.
echo 'print("Hello World!")' > hello.dml
With SYSTEMDS_JAR_FILE properly set, the script can be executed directly via the CLI:
systemds -f hello.dml
Expected output:
Hello World!
cd /path/to/install tar -xvf systemds-<VERSION>-bin.tgz cd systemds-<VERSION>-bin
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
systemds -help
You should see usage information printed to the console.
echo 'print("Hello World!")' > hello.dml
systemds -f hello.dml
Expected output:
Hello World!
For running scripts in Spark mode or experimenting with federated workers, see the Execution Guide: Execute SystemDS