Skip to main content

Arraylake

arraylake-datahub

DataHub ingestion source for Arraylake / Icechunk datasets.

The plugin crawls the Arraylake catalog over HTTPS and emits one DataHub Dataset per xarray-compatible Zarr group in your repos. Access control, credential vending, and querying stay in Arraylake — DataHub becomes the discovery and metadata-search surface, with externalUrl links back into the Arraylake web app for the actual data.

📖 Full documentation: Arraylake docs › Integrations › Catalogs › DataHub

What you get in DataHub

For every xarray-compatible group, a Dataset named <org>/<repo>/<group_path> with:

  • Schema — one field per Zarr array. Coordinates and data variables are distinguished via a classification flag in each field's jsonProps, alongside shape, chunk_shape, dimension_names, codecs, and the full CF attribute bag (GRIB_* keys are filtered as noise).
  • Description — the group's CF title + summary when present, otherwise the repo description.
  • externalUrl — direct link into the Arraylake page for that group.
  • customProperties spread:
    • Arraylake metadata: provider, product_type, spatial/temporal coverage, spatial_resolution, update_freq, etc.
    • Storage: bucket platform/name/region, computed storage_uri.
    • CF group attributes: license, institution, creator/publisher, time and geospatial coverage, references, history.
    • Marketplace subscription details if the repo is from a listing.

Repos with no xarray-compatible groups still emit one Dataset (repo landing only) so every catalog entry is discoverable.

Orphan repos — catalog entries whose underlying Icechunk storage no longer exists — are tagged with arraylake_storage_status=orphan.

Install

pip install arraylake-datahub 'acryl-datahub[datahub-rest]'

One-time platform registration

Register the earthmover custom data platform in your DataHub instance once:

datahub put platform \
  --name earthmover \
  --display_name "Earthmover" \
  --logo https://app.earthmover.io/icon.svg

Run

Save the following as recipe.yml:

source:
  type: earthmover
  config:
    # token: ${ARRAYLAKE_TOKEN}      # default: read from env
    # api_url: https://api.earthmover.io
    orgs:                            # omit to crawl every org the token sees
      - earthmover-public
    repo_pattern:
      allow: [".*"]
      # deny: [".*-archive$"]
    env: PROD                        # DataHub fabric

sink:
  type: datahub-rest
  config:
    server: http://localhost:8080
    token: ${DATAHUB_GMS_TOKEN}

Then run:

export ARRAYLAKE_TOKEN=ema_xxxxxxxxxxxx
export DATAHUB_GMS_TOKEN=...

datahub ingest -c recipe.yml --preview   # dry run
datahub ingest -c recipe.yml             # for real

The most useful knobs are orgs (allowlist) and repo_pattern (regex allow/deny). Full config below.

Config

Field Default Notes
token $ARRAYLAKE_TOKEN Arraylake API token (ema_*). Read-only is sufficient.
api_url https://api.earthmover.io Arraylake catalog API base URL.
web_url https://app.earthmover.io Used for externalUrl when a repo's web_url is missing.
orgs all visible Allowlist of org slugs. Omit to crawl every org the token sees.
repo_pattern allow .* AllowDenyPattern matched against <org>/<repo>.
env PROD DataHub fabric segment of the Dataset URN.
platform earthmover Must match the platform registered above.
walk_max_workers 8 Parallel HTTP fetches per repo when walking groups.
request_timeout_s 30
max_retries 3

Required Arraylake API access

The token needs read access to:

  • GET /user/orgs
  • GET /orgs/{org}/repos/paginated
  • GET /repos/{org}/{repo}
  • GET /repos/icechunk/{org}/{repo}/dataset-node

Verification

After a successful ingest, in DataHub's UI you should see:

  • The Earthmover platform with logo.
  • One Dataset per xarray-compatible Zarr group, named <org>/<repo>/<group>.
  • A Schema panel listing every coordinate and data variable with units and CF descriptions where available.
  • A clickable "View in Source" link that lands on the Arraylake page for that group, where authentication and querying happen.

Tested against acryl-datahub 0.15.x on Python 3.10–3.13.

Arraylake Support

Emailsupport@earthmover.io

Email us with any questions, bug reports, or feature requests.

License

Apache-2.0

Release files for arraylake-datahub 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for arraylake-datahub 0.1.1
File Size Uploaded
arraylake_datahub-0.1.1.tar.gz 28.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for arraylake-datahub 0.1.1
File Interpreter ABI Platform
arraylake_datahub-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 52.0 kB

Release files / arraylake_datahub-0.1.1.tar.gz

Download URL arraylake_datahub-0.1.1.tar.gz
Size 28.4 kB
Tags Source
SHA-256 checksum
How to use checksums
33de706b0bee07b237a95ce254596b82f92989e0f3887cfa95b4925576d18a9a
BLAKE2b-256 checksum
How to use checksums
9276d363bc0d3807f1827e507e60ecc6ba30d275009d7bf0f8d676f30aa91032
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 7, 2026.

Transparency log

Release files / arraylake_datahub-0.1.1-py3-none-any.whl

Download URL arraylake_datahub-0.1.1-py3-none-any.whl
Size 23.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9f8ae82979f1087484d029de6ea281db46c88790525be0a44f4486ce1702a2d4
BLAKE2b-256 checksum
How to use checksums
684848cd29e3fd0cf69d9b26dc06f8cd6f0f6aa369f3d4ed2d235663164a108f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 7, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page