Lakehouse Pipeline Provider: Streaming CDA Parquet Exports to Apache Iceberg
As an experienced lakehouse pipeline provider, we solve the complex technical challenge of streaming raw Cloud Data Access (CDA) Parquet exports into enterprise data warehouses and open table formats (Apache Iceberg, Databricks Delta Lake, Snowflake, and Apache Hudi). We deliver end-to-end serverless AWS Glue pipelines that ingest CDA data in real-time or scheduled batches, making it instantly discoverable across Amazon Athena, Redshift, Apache Spark, and Trino.
Source Format
Cloud Data Access (CDA) raw Parquet export dumps & change event files.
Compute Engine
Serverless AWS Glue (Spark 3.3+) with auto-scaling dynamic DPUs.
Target Table Format
Apache Iceberg (also Delta Lake, Snowflake external, and Apache Hudi).
SQL Discoverability
Amazon Athena, Redshift Spectrum, Apache Spark, Trino, & Presto.
The Technical Challenge: Ingesting Raw CDA Parquet Exports
Modern SaaS applications and enterprise platforms (such as Salesforce, CRM systems, and ERP platforms) provide Cloud Data Access (CDA) capabilities. CDA regularly pushes bulk Parquet file exports directly into cloud object storage (Amazon S3 buckets). While raw Parquet export is superior to legacy CSV files, converting these continuous dumps into reliable analytical assets poses severe engineering challenges:
- The High-Frequency Small File Problem: CDA feeds continuously emit thousands of small Parquet files every hour. Querying unmanaged S3 buckets filled with micro-files degrades query performance in Amazon Athena or Redshift and spikes S3 GET API request costs.
- Unordered Change Records & Missing ACID Guarantees: CDA exports contain inserts, updates, and deletes across partitioned folders. Without an open table format, performing row-level upserts requires scanning and rewriting entire historical datasets.
- Silent Schema Drift: When source application teams add columns or mutate field data types, naive ETL scripts crash, leading to silent pipeline failures and corrupted analytical tables.
- High Provisioned Compute Costs: Maintaining 24/7 dedicated clusters (EMR or EC2 instances) to poll S3 buckets for intermittent CDA file landings generates excessive infrastructure waste.
CDA Parquet to Apache Iceberg Architecture
High-level ingestion pipeline flow: Continuous streaming and micro-batch reading of Cloud Data Access (CDA) Parquet export files into production Apache Iceberg format tables on AWS S3, with unified catalog discovery across AWS Glue Data Catalog and Databricks Unity Catalog:

End-to-End Solution: Serverless AWS Glue CDA to Apache Iceberg Pipeline
As a specialized lakehouse pipeline provider, we engineer resilient, production-hardened data pipelines tailored to your SLA, volume, and budget requirements. Our turnkey solution bridges raw CDA exports and your downstream analytical lakehouse:
| Pipeline Stage | Technical Architecture | Business & Engineering Benefit |
|---|---|---|
| 1. Landing & Detection | S3 Event notifications trigger AWS EventBridge, feeding metadata queues or streaming micro-batches without continuous file polling. | Zero latency delay, instant ingestion trigger on file arrival. |
| 2. Serverless Transformation | AWS Glue Spark jobs apply type enforcement, automated column casting, deduplication, and watermark-based time tracking. | No idle cluster costs; pay strictly for compute seconds utilized. |
| 3. Iceberg ACID Writing | Direct MERGE INTO operations write clean Parquet data files and metadata manifests into native Apache Iceberg format. | Complete ACID transaction safety, atomic commits, and snapshot isolation. |
| 4. Catalog Registration | Iceberg table namespaces, partitions, and schemas register automatically with the AWS Glue Data Catalog. | Instant discoverability for Amazon Athena, Redshift, Trino, and Spark. |
| 5. Automated Compaction | Scheduled background maintenance jobs run Iceberg bin-pack rewrite actions to merge small files into optimal 256MB chunks. | Sustains sub-second Athena query speeds while purging expired snapshots. |
Production Pipeline Code & Configuration
Our pipelines are built with clean, modular PySpark code running natively on AWS Glue 4.0+. Below is an example of our streaming micro-batch CDA consumer merging incoming event updates directly into Apache Iceberg:
1# AWS Glue Serverless PySpark Pipeline: CDA Parquet to Apache Iceberg
2from pyspark.sql import SparkSession
3from pyspark.sql.functions import col, current_timestamp
4
5# Initialize Spark Session with AWS Glue Data Catalog & Iceberg extensions
6spark = SparkSession.builder \
7 .config("spark.sql.extensions", "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") \
8 .config("spark.sql.catalog.glue_catalog", "org.apache.iceberg.spark.SparkCatalog") \
9 .config("spark.sql.catalog.glue_catalog.warehouse", "s3://<Bucket Name>/iceberg-warehouse/") \
10 .config("spark.sql.catalog.glue_catalog.catalog-impl", "org.apache.iceberg.aws.glue.GlueCatalog") \
11 .config("spark.sql.catalog.glue_catalog.io-impl", "org.apache.iceberg.aws.s3.S3FileIO") \
12 .getOrCreate()
13
14# 1. Read Raw Stream Raw Parquet Data from landing bucket
15cda_landing_path = "s3://<Bucket Name>/raw/salesforce_cda/year=*/month=*/*.parquet"
16
17raw_cda_df = spark.readStream \
18 .format("parquet") \
19 .schema(cda_inferred_schema) \
20 .option("maxFilesPerTrigger", 500) \
21 .load(cda_landing_path)
22
23# 2. Enrich, Deduplicate, and Cast Data Types
24transformed_df = raw_cda_df \
25 .filter(col("id").isNotNull()) \
26 .withColumn("ingestion_timestamp", current_timestamp())
27
28# 3. Micro-Batch Upsert (MERGE INTO) Target Apache Iceberg Table
29def write_iceberg_microbatch(microbatch_df, batch_id):
30 microbatch_df.createOrReplaceTempView("cda_updates")
31 spark.sql("""
32 MERGE INTO glue_catalog.lakehouse_db.cda_customer_events target
33 USING cda_updates source
34 ON target.id = source.id
35 WHEN MATCHED AND source.updated_at > target.updated_at THEN
36 UPDATE SET *
37 WHEN NOT MATCHED THEN
38 INSERT *
39 """)
40
41query = transformed_df.writeStream \
42 .format("iceberg") \
43 .trigger(processingTime="1 minute") \
44 .option("checkpointLocation", "s3://<Bucket Name>/checkpoints/cda_events/") \
45 .foreachBatch(write_iceberg_microbatch) \
46 .start()
47
48query.awaitTermination()Serverless Cost Optimization Profile
We configure automated worker scaling so you never overpay for fluctuating CDA export volumes:
1# Serverless AWS Glue Job Execution Configuration (Terraform / CLI)
2Type: "G.1X" # 4 vCPU, 16 GB memory per DPU
3NumberOfWorkers: 2 # Autoscales between 2 to 10 workers dynamically
4Timeout: 60 # Caps execution duration for batch schedules
5GlueVersion: "4.0" # Native Spark 3.3.0 & Iceberg support
6DefaultArguments: {
7 "--datalake-formats": "iceberg",
8 "--enable-auto-scaling": "true",
9 "--job-bookmark-option": "job-bookmark-enable",
10 "--conf": "spark.sql.iceberg.handle-timestamp-without-timezone=true"
11}Why Choose Our Lakehouse Pipeline Solution Over Generic SaaS Tools?
Enterprise data teams often debate whether to use expensive per-GB SaaS data replication platforms, assemble brittle internal shell scripts, or engage a specialized lakehouse pipeline provider. Here is how our architecture compares:
| Capability | Our AWS Glue Iceberg Pipeline | Third-Party SaaS Replication | DIY Manual Scripts |
|---|---|---|---|
| Cost Structure | Zero Per-GB Surcharges — you only pay native AWS Glue DPU compute costs. | High recurring monthly markup billed on total gigabytes ingested. | Low compute cost but high hidden engineering maintenance hours. |
| Table Format Control | Native Apache Iceberg with full access to metadata manifests and schema history. | Often forces proprietary staging tables or limited format options. | Raw Parquet without transactional ACID guarantees or snapshot tracking. |
| Infrastructure Ownership | Runs 100% inside your own AWS VPC and Cloud account under your IAM governance. | Data flows through third-party vendor infrastructure and security scopes. | In your account, but lacks CI/CD and automated disaster recovery. |
| SQL Engine Portability | Queryable directly by Athena, Redshift, Spark, Trino, Snowflake, and Databricks. | Locked into vendor-specific connectors or sync destinations. | Slow query execution caused by uncompacted small files. |
Instant SQL Discoverability: Athena, Redshift, Spark & Trino
By registering Apache Iceberg tables in the AWS Glue Data Catalog, your raw CDA data is immediately ready for self-service analytics across modern SQL query engines without data movement:
Amazon Athena
Run serverless Presto SQL queries directly on S3 Iceberg tables. Benefit from metadata-level partition pruning, column projection, and time-travel querying without provisioning infrastructure. Your engineers can run queries like select * from cda.table_name where created_at >= 'yyyy-mm-dd' and created_at <= 'yyyy-mm-dd - number of days'. This query will run in seconds on data spread across tables created through our pipeline and available in Glue data catalog, Access can be granted through Lakeformation using our IaaC codebase of Terraform.
Amazon Redshift
Mount the Glue Iceberg catalog into Amazon Redshift Spectrum or external schemas to join real-time CDA tables directly with existing historical data warehouse star schemas. No issues of data inconsistency between the platforms as same data will be mounted only.
Apache Spark & EMR
Data scientists and ML engineers can read petabyte-scale CDA Iceberg tables directly into Spark DataFrames for feature engineering, machine learning pipelines, and batch reporting. Will make the AWS Glue catalog metadata available to the EMR cluster using the credentials provided by the users, so that user can write the complex SQL using the same table name as available in Athena or Glue data catalog.
Databricks / Snowflake & Trino
Connect federated query engines like Trino or external lakehouse platforms (Databricks, Snowflake external Iceberg tables) using native Glue Catalog REST credentials. This will help to keep single copy of data across platforms and no need to move or copy the data across platforms. User can use the same sql queries as available in Athena or Glue data catalog. No issues of data inconsistency between the platforms.
Databricks Unity Catalog
Register Iceberg tables into Databricks Unity Catalog to unify governance, access control, and data sharing across Databricks workspaces. Either we can make it available using the Volume concept without registering the tables into unity catalog or by registering the tables into unity catalog. Let me know which one you prefer. Make it instant available for Databricks users.
Frequently Asked Questions (FAQ)
What is Cloud Data Access (CDA) Parquet export ingestion?
Cloud Data Access (CDA) is a data delivery mechanism where enterprise platforms (like Salesforce) export raw change events and operational records directly into customer-owned S3 buckets as partitioned Parquet files. Our pipeline ingests these continuous exports, deduplicates records, and merges them into production Apache Iceberg tables.
Can this AWS Glue pipeline run as both a batch job and streaming job?
Yes. Depending on your business latency and budget requirements, we configure the pipeline as either an hourly/daily serverless batch job with Glue bookmarks or as a continuous Spark Structured Streaming micro-batch job (triggering every 1 to 5 minutes) for near-real-time analytics.
Which table formats are supported besides Apache Iceberg?
While Apache Iceberg is our primary recommendation for AWS environments due to native Glue Catalog and Athena support, our modular pipeline framework also supports Delta Lake, Apache Hudi, and Snowflake managed external tables.
How does this pipeline prevent small file performance degradation?
We build automated Iceberg table maintenance into the orchestration workflow. Scheduled compaction jobs execute Apache Iceberg bin-pack rewrite actions, consolidating micro-files into optimal 128MB to 512MB sizes while pruning obsolete metadata snapshots.
How do we get started with your lakehouse pipeline provider services?
We deliver complete Infrastructure as Code (Terraform) and production PySpark code directly into your AWS cloud account. Contact our engineering team for an architectural assessment and proof of concept on your CDA dataset.
Get Started with a Production Lakehouse Pipeline
Eliminate small file bloat, unreliable manual scripts, and expensive per-GB SaaS ingestion costs. Deploy a battle-tested serverless AWS Glue Iceberg pipeline for your Cloud Data Access exports.
Explore Our Other Ingestion & Lakehouse Pipeline Solutions
Additional resources: Learn more about open table formats in our guide on what is a data lake, compare architectures in data lake vs data warehouse, or read our hands-on tutorial on getting started with Apache Iceberg.