Downloading Results
After a Bacalhau job completes, you'll need to retrieve the output files generated by your job. This guide explains the basics of downloading job results.
What You'll Learn
- How to specify output paths in your jobs
- How to retrieve job results using the CLI
Getting Job Results
To download the results of a completed job:
bacalhau job get <jobID>
This command downloads all outputs from the job to your current directory.
Specifying an Output Directory
You can specify where to save the downloaded results:
bacalhau job get <jobID> --output-dir /path/to/save
Download Timeout Setting
For larger downloads, you can adjust the timeout:
bacalhau job get <jobID> --download-timeout-secs 10m
Specifying Job Outputs and Publisher
When submitting a job, you need to define which files or directories should be collected as outputs, and where those outputs should be published.
Using Command Line
For Docker jobs, use the --output
flag to define outputs and the --publisher
flag to specify where to publish the results:
bacalhau docker run \
--output results:/outputs \
--publisher s3://my-bucket/results-folder \
ubuntu:latest \
-- echo "Hello, World!" > /outputs/hello.txt
This tells Bacalhau to:
- Collect everything in the
/outputs
directory of the container - Publish it to the specified S3 bucket and path
- Make it available for download with
bacalhau job get
Using Declarative Submission
You can also define outputs in a job specification file:
Type: batch
Count: 1
Tasks:
- Name: main
Engine:
Type: docker
Params:
Image: python:3.9
Entrypoint:
- 'python'
- '-c'
- "import os; os.makedirs('/outputs', exist_ok=True); open('/outputs/result.txt', 'w').write('Analysis complete!')"
Publisher:
Type: s3
Params:
Bucket: my-bucket
Key: results-folder
ResultPaths:
- Name: results
Path: /outputs
Submit this job using:
bacalhau job run job-spec.yaml
Multiple Output Paths
You can specify multiple output paths in a single job:
bacalhau docker run \
--output logs:/var/log \
--output results:/outputs \
--publisher s3://my-bucket/results-folder \
ubuntu:latest \
-- <your-command>
Downloaded Results Structure
After running bacalhau job get
, the results will be organized in a directory structure like this:
.
├── job-j-6bafb8d4
│ ├── exitCode
│ ├── outputs
│ │ └── file1
│ ├── stderr
│ └── stdout
The directory structure includes:
exitCode
: Contains the exit code of the joboutputs
: Contains all the files from the job's specified output directoriesstderr
: Captures any error output from the jobstdout
: Captures the standard output from the job