Lake Pulse
A Rust library for analyzing data lake table health — checking the pulse — across multiple formats (Delta Lake, Apache Iceberg, Apache Hudi, Lance) and storage providers (AWS S3, Azure Data Lake, GCS, HDFS, Local).
Supported Formats
Overview
Lake Pulse provides comprehensive health metrics for your data lake tables, including:
- File organization and compaction opportunities
- Metadata analysis and schema evolution
- Partition statistics
- Time travel/snapshot metrics
- Storage efficiency insights
Quick Start
Basic Example - Analyzing a Delta Lake table on AWS S3
use ;
async
Supported Table Formats
- Delta Lake - Full support for transaction logs, deletion vectors, and Delta-specific metrics
- Apache Iceberg - Metadata analysis, snapshot management, and Iceberg-specific features
- Apache Hudi - Basic support for Hudi table structure analysis and metrics (requires
hudifeature) - Lance - Modern columnar format with vector search capabilities (requires
lancefeature)
Feature Flags
By default, Lake Pulse includes support for Delta Lake and Apache Iceberg. Additional table formats can be enabled via feature flags:
| Feature | Description |
|---|---|
hudi |
Enables Apache Hudi support |
lance |
Enables Lance support |
all |
Enables all table formats (hudi + lance) |
Usage
# In your Cargo.toml
# Default (Delta + Iceberg only)
= "0.2"
# With Hudi support
= { = "0.2", = ["hudi"] }
# With Lance support
= { = "0.2", = ["lance"] }
# With all table formats (Delta + Iceberg + Hudi + Lance)
= { = "0.2", = ["all"] }
Storage Configuration
Lake Pulse uses the object_store crate for cloud storage access. Configuration options are passed through to the underlying storage provider.
AWS S3 Configuration Options
Common options for S3 (see object_store AWS documentation):
bucket- S3 bucket nameregion- AWS region (e.g., "us-east-1")access_key_id- AWS access key IDsecret_access_key- AWS secret access keysession_token- Optional session token for temporary credentialsendpoint- Optional custom endpoint URL
Azure Configuration Options
Common options for Azure (see object_store Azure documentation):
container- Azure container nameaccount_name- Storage account nametenant_id- Azure tenant IDclient_id- Service principal client IDclient_secret- Service principal client secret
GCP Configuration Options
Common options for GCP (see object_store GCP documentation):
bucket- GCS bucket nameservice_account_key- Path to service account JSON key file
HDFS Configuration Options
HDFS support is provided via the hdfs-native-object-store crate:
url- HDFS namenode URL (e.g., "hdfs://namenode:8020")
let storage_config = hdfs
.with_option;
let analyzer = builder.build.await.unwrap;
let report = analyzer.analyze.await.unwrap;
Local Filesystem
let storage_config = local;
let analyzer = builder.build.await.unwrap;
let report = analyzer.analyze.await.unwrap;
Examples
See the examples/ directory for more detailed usage examples:
s3_store.rs- AWS S3 exampleadl_store.rs- Azure Data Lake examplehdfs_store.rs- HDFS examplelocal_store.rs- Local filesystem examplelocal_store_iceberg.rs- Iceberg table examplelocal_store_hudi.rs- Hudi table example (requireshudifeature)local_store_lance.rs- Lance table example (requireslancefeature)
Run examples with:
# For examples requiring feature flags:
Documentation
For detailed information on configuration options, refer to the object_store crate documentation:
Supported Storages
See LAKE_PULSE_SUPPORTED_STORAGES.md for a comparison of storage providers supported by Lake Pulse.
Minimum Supported Rust Version (MSRV)
This crate requires Rust 1.88 or later.
Contributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
License
See LICENSE files for details.