Skip to main content
This feature requires StarTree Cloud with a minion tier enabled, and must be enabled on demand — contact StarTree support to activate it.
DataExportTask is a Pinot minion task that exports completed REALTIME segments to external storage as Parquet files. It is the complement of ExternalTableSyncTask: where that task reads external Parquet into Pinot, DataExportTask writes Pinot data back out to your data lake. Common uses include cold-tier archival, feeding downstream Iceberg catalogs, and cross-system data sharing without a separate ETL pipeline. Two destinations are supported: a plain filesystem path (any S3-compatible URI via PinotFS) and an Iceberg REST catalog (AWS Glue, S3 Tables, or any Iceberg REST-compliant catalog).

How it works

Each cycle, the Generator runs on the controller: it loads a time-based watermark from ZooKeeper, filters REALTIME segments that are completed, past the bufferTimePeriod, and not already checkpointed or in a running task. It then emits one PinotTaskConfig per eligible segment, capped by tableMaxNumTasks. The Executor runs on a minion: it downloads the segment from Pinot deep store, converts it to Parquet using the configured writer, and uploads the result to the destination. On success, it posts a COMPLETED checkpoint back so the segment is not re-exported.

Supported destinations


Prerequisites

  • A REALTIME table with completed segments exists in your StarTree cluster.
  • A minion tier is provisioned in the cluster.
  • The minion has network access to the destination (S3 bucket, GCS bucket, or Iceberg REST endpoint).
  • For Iceberg REST: the target table must already exist in the catalog, must not be partitioned, and must use Parquet as its file format.

Configuring the task

Add DataExportTask to the table’s task.taskTypeConfigsMap.

AWS S3 using Basic Authentication

AWS S3 using IAM-Based Authentication

GCS

Use GcsPinotFS with a service account key:

Iceberg REST

For an Iceberg REST destination, replace the filesystem keys with the catalog connection:

Config reference

Core settings


Filesystem target

Set these when dataExport.target=filesystem.

AWS S3 using Basic Authentication

AWS S3 using IAM-Based Authentication

GCS


Parquet format

These apply to both destinations.

Iceberg REST target

Set these when dataExport.target=iceberg-rest.
For AWS Glue and S3 Tables, the catalog vends short-lived S3 credentials automatically — do not set static s3.* keys unless you want to override them. The minion’s IAM role must have glue:GetTable and s3:PutObject (or equivalent S3 Tables) permissions on the target.

Iceberg batch commits

By default, each minion subtask uploads a Parquet file and stages it. The Generator accumulates staged files in ZooKeeper and issues a single Iceberg snapshot commit (AppendFiles.commit()) when the batch is ready — one snapshot for many segments instead of one per segment. This reduces Iceberg snapshot churn on high-throughput tables. The Generator runs an EMIT / WAIT / COMMIT decision each cycle:

Scheduling and monitoring

DataExportTask uses the standard Pinot minion task scheduler. To trigger a run immediately without waiting for the next schedule tick, use the task schedule endpoint:
To check task status, use the standard Pinot tasks API — per-table state:
or subtask states across all tables running this task type:
For a broader view of sync health and the ingestion checkpoint, see the Observability page.