We welcome and encourage contributions of all kinds, such as:
- Tickets with issue reports of feature requests
- Documentation improvements
- Code (PR or PR Review)
In addition to submitting new PRs, we have a healthy tradition of community members helping review each other's PRs. Doing so is a great way to help the community as well as get more familiar with Rust and the relevant codebases.
You can find a curated good-first-issue list to help you get started.
This section describes how you can get started with Ballista development.
Ballista contains components implemented in the following programming languages:
- Rust (Scheduler and Executor processes, Client library)
We use the standard Rust development tools.
cargo build
cargo fmt
to format the codecargo test
to test- etc.
Testing setup:
rustup update stable
DataFusion uses the latest stable release of rust
Formatting instructions:
or run them all at once:
The scheduler and executor processes can be configured using toml files, environment variables and command-line arguments. The specification for config options can be found here:
Those files fully define Ballista's configuration. If there is a discrepancy between this documentation and the files, assume those files are correct.
To get a list of command-line arguments, run the binary with --help
There is an example config file at ballista/executor/examples/example_executor_config.toml
The order of precedence for arguments is: default config file < environment variables < specified config file < command line arguments.
The executor and scheduler will look for the default config file at /etc/ballista/[executor|scheduler].toml
To
specify a config file use the --config-file
argument.
Environment variables are prefixed by BALLISTA_EXECUTOR
or BALLISTA_SCHEDULER
for the executor and scheduler
respectively. Hyphens in command line arguments become underscores. For example, the --scheduler-host
argument
for the executor becomes BALLISTA_EXECUTOR_SCHEDULER_HOST
Refer to the instructions in the Python Bindings README
The integration tests can be executed by running the following command from the root of the repository.
./dev/integration-tests.sh
We are using prettier
to format .md
files.
You can either use npm i -g prettier
to install it globally or use npx
to run it as a standalone binary. Using npx
required a working node environment. Upgrading to the latest prettier is recommended (by adding --upgrade
to the npm
command).
$ prettier --version
2.3.0
After you've confirmed your prettier version, you can format all the .md
files:
prettier -w README.md {ballista,ballista-cli,benchmarks,dev,docs,examples,python}/**/*.md