Setup Environment for Aggregate Time Windows
Before building the time-windowed aggregation pipeline, you'll set up sample IoT sensor data and configure environment variables.
Prerequisites
This example requires the following services to be running:
Before you begin, please ensure these services are set up and running according to their respective guides. Additionally, ensure you have completed the Local Development Setup guide for general environment configuration.
Step 1: Configure Example-Specific Variables
After setting up the core services, configure aggregation-specific variables:
# Analytics endpoint for cloud ingestion (optional)
export ANALYTICS_ENDPOINT="https://analytics.example.com/api/v1"
export ANALYTICS_API_KEY="your_analytics_api_key_here"
# Local buffering directory for network outages
export BUFFER_PATH="/var/expanso/buffer"
mkdir -p "$BUFFER_PATH"
# Verify environment
echo "Analytics endpoint: $ANALYTICS_ENDPOINT"
echo "Buffer directory: $BUFFER_PATH"
Step 2: Download Sample IoT Sensor Data
Download sample sensor data representing 1000 temperature sensors generating 60 events/minute:
# Download sample IoT sensor data (1000 sensors × 60 events/minute)
curl -o sensor-data.jsonl https://github.com/expanso-io/examples/raw/main/data/iot-sensors.jsonl
# Verify download (should show ~60,000 events)
wc -l sensor-data.jsonl
# Inspect sample events
head -5 sensor-data.jsonl
Expected sample format:
{"sensor_id":"temp_001","location":"warehouse_a","temperature":72.3,"humidity":45.2,"timestamp":"2025-01-15T10:23:45.123Z"}
{"sensor_id":"temp_002","location":"warehouse_a","temperature":71.8,"humidity":44.9,"timestamp":"2025-01-15T10:23:45.456Z"}
{"sensor_id":"temp_003","location":"warehouse_b","temperature":73.1,"humidity":46.1,"timestamp":"2025-01-15T10:23:45.789Z"}
Step 3: Verify Cache Configuration
Before proceeding with cache-based aggregation, verify your system can handle the memory requirements:
# Check available system memory
free -h
# Calculate expected memory usage for 1-minute windows:
# 1000 events/sec × 60 seconds × 1KB per event = ~60MB
echo "Expected memory usage for 1-minute windows: ~60MB"
# For 1-hour windows:
# 1000 events/sec × 3600 seconds × 1KB per event = ~3.6GB
echo "Expected memory usage for 1-hour windows: ~3.6GB"
Next Steps
Your environment is now configured for time-windowed aggregation. Choose your learning path: