Skip to main content
Parquet is a columnar storage format optimized for analytics, offering efficient compression and fast reads. This destination writes your Lakehouse tables to an Amazon S3 bucket as compressed Parquet datasets, ready to be consumed by Athena, Spark, pandas, or any Parquet-compatible tool.

1. Add your AWS S3 access

  1. In the Destinations tab, click on the “Add destination” button located on the top right of your screen. Then, select the Parquet (AWS S3) option from the list of connectors.
  2. Click Next and you’ll be prompted to add your access:

Required Configuration

  • Bucket name: The AWS S3 bucket name where you want to store the Parquet files.

AWS Authentication

Three authentication methods are supported:
  1. Access keys: provide an Access key ID and Secret access key created in the AWS IAM console.
  2. IAM role: provide an Assume IAM Role ARN (e.g. arn:aws:iam::123456789012:role/MyRole). Nekt assumes the role via STS with automatically refreshed credentials, so you don’t need to share access keys.
  3. None: leave all authentication fields empty to use the AWS account where your pipelines run (e.g. for Nekt-managed buckets, pattern: nekt-lakehouse-{company-name}).
To create AWS credentials for accessing your S3 bucket:
  1. Log in to your AWS IAM Console
  2. Navigate to Users and select your user (or create a new one)
  3. Go to the Security credentials tab
  4. Click Create access key
  5. Select Application running outside AWS or Other as the use case
  6. Copy the Access Key ID and Secret Access Key (you won’t be able to see the secret again)
Required IAM Permissions:Your AWS user/role needs the following S3 permissions:
s3:DeleteObject is required because each sync replaces the table folder contents.

File Configuration

  • Output folder path: Folder path where to store the output tables inside the S3 bucket. Leave empty if the tables should be stored in the bucket’s root folder.
    • Example: data/exports or reports/daily
  • Table folder name: A custom folder name for the output table. If empty, the name of the table being sent is used. When several tables are sent, use the per-table folder name instead.
  • Compression: (Advanced, default: snappy) Compression codec used when writing the Parquet files (snappy or gzip).
  1. Click Next.

Output layout

Each table is written as a Parquet dataset:
When sending several tables to the same destination, each one is written to its own folder (named after the stream unless overridden by the per-table folder name setting). Each sync replaces the table folder contents, so the destination always mirrors the current state of the table in Nekt. The _nekt_sync_at partition carries the UTC timestamp of the sync that wrote the data.
Two tables can never share the same folder. Since every sync wipes the table folder before writing, sharing a folder would cause the tables to erase each other. The pipeline will refuse to start if multiple tables are configured to use the same output folder.

2. Select your data to send

  1. The next step is letting us know which data you want to export to S3. Select the layer and then the desired table(s).
    Tip: Tables can be found more easily by typing their names.
  2. Click Next.

3. Configure your Parquet (AWS S3) data destination

  1. Describe your destination for easy identification within your organization. You can inform things like what data it exports, to which team it belongs, etc.
  2. To define your Trigger, consider how frequently you need to have the data updated in S3 (every day, once a week, only at specific times, etc.).
  3. Click Done.

4. Check your new destination

  1. Once completed, you’ll receive confirmation that your new destination is set up!
  2. You can view your new destination on the Destinations page. The pipeline will run according to your configured trigger schedule. You can monitor it on the Destinations page to see its execution and completion.
  3. If needed, manually trigger the pipeline by clicking on the refresh icon. Once executed, your Parquet files will be available in your S3 bucket at the path you specified.
You can query the exported datasets directly with Athena, Spark, DuckDB, or pandas. They all read the Hive-style _nekt_sync_at partitioning natively.
Make sure your S3 bucket has the appropriate permissions and policies configured to prevent unauthorized access to your data.
If you encounter any issues, reach out to us via Slack, and we’ll gladly assist you!

Implementation Notes

Error Logging

When a batch of records fails to be processed, the destination logs diagnostic information to help identify the issue. To ensure that error logs are reliably captured without exceeding size limits (which could otherwise cause the entire error traceback to be dropped by the logging system), the connector bounds the diagnostic dump:
  • Sample records: Logs a sample of up to 5 records from the failed batch.
  • Record truncation: Each logged record is truncated if it exceeds 4,000 characters.
  • Schema truncation: The table schema is truncated if it exceeds 64,000 characters.
This guarantees that the core exception reaches the logs and provides actionable context for debugging.