Apache Spark 4.2 vs Databricks 2026: āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄ āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ

āđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļšāđ€āļŠāļīāļ‡āļĨāļķāļ Apache Spark 4.2 vs Databricks āļŠāļģāļŦāļĢāļąāļšāļ›āļĩ 2026 āđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āļ„āļ§āļēāļĄāđāļ•āļāļ•āđˆāļēāļ‡āļ”āđ‰āļēāļ™āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄ āļāļēāļĢāđāļĨāļāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļ”āđ‰āļēāļ™āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž āļŸāļĩāđ€āļˆāļ­āļĢāđŒāļĨāđˆāļēāļŠāļļāļ” āđāļĨāļ°āđ€āļ•āļĢāļĩāļĒāļĄāļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ data engineering

Apache Spark 4.2 vs Databricks 2026: āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄ āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ

Apache Spark 4.2 āđāļĨāļ° Databricks āđ€āļ›āđ‡āļ™āļ•āļąāļ§āđāļ—āļ™āļ‚āļ­āļ‡āļŠāļ­āļ‡āđāļ™āļ§āļ—āļēāļ‡āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ‚āđ‰āļ­āļĄāļđāļĨāđāļšāļšāļāļĢāļ°āļˆāļēāļĒāđƒāļ™āļ›āļĩ 2026 Spark āļĄāļ­āļšāļ„āļ§āļēāļĄāļĒāļ·āļ”āļŦāļĒāļļāđˆāļ™āļŠāļđāļ‡āļŠāļļāļ”āđƒāļ™āļāļēāļ™āļ° framework āđ‚āļ­āđ€āļžāđˆāļ™āļ‹āļ­āļĢāđŒāļŠ āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆ Databricks āļŦāđˆāļ­āļŦāļļāđ‰āļĄ Spark āđ„āļ§āđ‰āđƒāļ™āđāļžāļĨāļ•āļŸāļ­āļĢāđŒāļĄ lakehouse āļ—āļĩāđˆāļĄāļĩāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļžāļĢāđ‰āļ­āļĄāļāļēāļĢāļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āđ€āļ‰āļžāļēāļ° āļāļēāļĢāļ—āļģāļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāđƒāļˆāļ„āļ§āļēāļĄāđāļ•āļāļ•āđˆāļēāļ‡āļĢāļ°āļŦāļ§āđˆāļēāļ‡āļ—āļąāđ‰āļ‡āļŠāļ­āļ‡āļ•āļąāļ§āđ€āļĨāļ·āļ­āļāļ™āļĩāđ‰āļĄāļĩāļ„āļ§āļēāļĄāļŠāļģāļ„āļąāļāļ­āļĒāđˆāļēāļ‡āļĒāļīāđˆāļ‡āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāđ€āļ•āļĢāļĩāļĒāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ data engineering āđāļĨāļ°āļāļēāļĢāļ•āļąāļ”āļŠāļīāļ™āđƒāļˆāļ”āđ‰āļēāļ™āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄ

āļ„āļ§āļēāļĄāđāļ•āļāļ•āđˆāļēāļ‡āļŦāļĨāļąāļ

Apache Spark āļ„āļ·āļ­ framework āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāđāļšāļšāļāļĢāļ°āļˆāļēāļĒ Databricks āļ„āļ·āļ­āđāļžāļĨāļ•āļŸāļ­āļĢāđŒāļĄāđ€āļŠāļīāļ‡āļžāļēāļ“āļīāļŠāļĒāđŒāļ—āļĩāđˆāļŠāļĢāđ‰āļēāļ‡āļšāļ™ Spark āļāļēāļĢāđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļšāļ—āļąāđ‰āļ‡āļŠāļ­āļ‡āđ‚āļ”āļĒāļ•āļĢāļ‡āđ€āļŦāļĄāļ·āļ­āļ™āļāļąāļšāļāļēāļĢāđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļš Linux āļāļąāļš Red Hat Enterprise Linux: āļ­āļąāļ™āļŦāļ™āļķāđˆāļ‡āļ„āļ·āļ­āļĢāļēāļāļāļēāļ™ āļ­āļĩāļāļ­āļąāļ™āļ„āļ·āļ­āđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™āļ—āļĩāđˆāļœāļĨāļīāļ•āđ€āļ›āđ‡āļ™āļŠāļīāļ™āļ„āđ‰āļēāļžāļĢāđ‰āļ­āļĄāļŸāļĩāđ€āļˆāļ­āļĢāđŒāļŠāļģāļŦāļĢāļąāļšāļ­āļ‡āļ„āđŒāļāļĢ

Apache Spark 4.2: āļŸāļĩāđ€āļˆāļ­āļĢāđŒāđƒāļŦāļĄāđˆāđāļĨāļ°āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄ

Apache Spark 4.2 āđ€āļ›āļīāļ”āļ•āļąāļ§āđ€āļĄāļ·āđˆāļ­āļ§āļąāļ™āļ—āļĩāđˆ 14 āļāļĢāļāļŽāļēāļ„āļĄ 2026 āļ™āļģāđ€āļŠāļ™āļ­āļŸāļĩāđ€āļˆāļ­āļĢāđŒāļŦāļĨāļēāļĒāļ­āļĒāđˆāļēāļ‡āļ—āļĩāđˆāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļ§āļīāļ˜āļĩāļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ‚āļ­āļ‡ data pipeline āļāļēāļĢāđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄāļ—āļĩāđˆāļŠāļģāļ„āļąāļāļ—āļĩāđˆāļŠāļļāļ”āļĄāļļāđˆāļ‡āđ€āļ›āđ‰āļēāđ„āļ›āļ—āļĩāđˆ change data capture āļāļēāļĢāļœāļŠāļēāļ™āļĢāļ§āļĄ AI āđāļĨāļ° streaming workload

Auto CDC āđāļĨāļ° CHANGES Clause

Spark 4.2 āļ—āļģāđƒāļŦāđ‰ change data capture āđ€āļ›āđ‡āļ™āļŸāļĩāđ€āļˆāļ­āļĢāđŒ native āđƒāļ™ engine āļāđˆāļ­āļ™āļŦāļ™āđ‰āļēāļ™āļĩāđ‰ āļāļēāļĢāļ•āļīāļ”āļ•āļēāļĄāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ•āđ‰āļ­āļ‡āđƒāļŠāđ‰āđ‚āļ‹āļĨāļđāļŠāļąāļ™āđāļšāļšāļāļģāļŦāļ™āļ”āđ€āļ­āļ‡āļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡āļāļąāļš timestamp āļāļēāļĢāđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļš hash āļŦāļĢāļ·āļ­āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­ CDC āļ āļēāļĒāļ™āļ­āļ āļŸāļĩāđ€āļˆāļ­āļĢāđŒ Auto CDC āđƒāļŦāļĄāđˆāļˆāļąāļ”āļāļēāļĢāļŠāļīāđˆāļ‡āļ™āļĩāđ‰āđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī

sql
-- changes-query.sql
-- āļ„āđ‰āļ™āļŦāļēāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āđƒāļ™āļ•āļēāļĢāļēāļ‡ Delta āļ•āļąāđ‰āļ‡āđāļ•āđˆāđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™ 10
SELECT * FROM orders CHANGES SINCE VERSION 10;

-- āļ•āļīāļ”āļ•āļēāļĄāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļ āļēāļĒāđƒāļ™āļŠāđˆāļ§āļ‡āđ€āļ§āļĨāļē
SELECT * FROM customers 
CHANGES BETWEEN TIMESTAMP '2026-07-01' AND TIMESTAMP '2026-07-15';

CHANGES clause āļŠāđˆāļ‡āļ„āļ·āļ™āđāļ–āļ§āļžāļĢāđ‰āļ­āļĄāļ„āļ­āļĨāļąāļĄāļ™āđŒ metadata āļ—āļĩāđˆāļĢāļ°āļšāļļāļ§āđˆāļēāđāļ•āđˆāļĨāļ°āđāļ–āļ§āļ–āļđāļ insert update āļŦāļĢāļ·āļ­ delete āļ‹āļķāđˆāļ‡āļ‚āļˆāļąāļ”āļ„āļ§āļēāļĄāļˆāļģāđ€āļ›āđ‡āļ™āđƒāļ™āļāļēāļĢāļ”āļđāđāļĨāđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™ CDC āđāļĒāļāļ•āđˆāļēāļ‡āļŦāļēāļāļŠāļģāļŦāļĢāļąāļšāļāļĢāļ“āļĩāļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļŠāđˆāļ§āļ™āđƒāļŦāļāđˆ

Metric Views: Semantic Layer āđāļšāļš Native

Metric Views āļŠāļĢāđ‰āļēāļ‡āļ„āļģāļˆāļģāļāļąāļ”āļ„āļ§āļēāļĄāļ—āļēāļ‡āļ˜āļļāļĢāļāļīāļˆāļ—āļĩāđˆāļĄāļĩāļāļēāļĢāļāļģāļāļąāļšāļ”āļđāđāļĨāđ‚āļ”āļĒāļ•āļĢāļ‡āđƒāļ™ Spark SQL āļ—āļĩāļĄāļāļģāļŦāļ™āļ” metric āļ„āļĢāļąāđ‰āļ‡āđ€āļ”āļĩāļĒāļ§ āļĢāļąāļšāļĢāļ­āļ‡āļāļēāļĢāļ„āļģāļ™āļ§āļ“āļ—āļĩāđˆāļŠāļ­āļ”āļ„āļĨāđ‰āļ­āļ‡āļāļąāļ™āļ—āļąāđˆāļ§āļ—āļąāđ‰āļ‡ dashboard āļĢāļēāļĒāļ‡āļēāļ™ āđāļĨāļ°āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™ AI

sql
-- metric-views.sql
-- āļāļģāļŦāļ™āļ” metric view āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ„āļģāļ™āļ§āļ“āļĢāļēāļĒāđ„āļ”āđ‰
CREATE METRIC VIEW monthly_revenue AS
SELECT 
    DATE_TRUNC('month', order_date) AS month,
    SUM(amount) AS total_revenue,
    COUNT(DISTINCT customer_id) AS unique_customers,
    SUM(amount) / COUNT(DISTINCT customer_id) AS revenue_per_customer
FROM orders
WHERE status = 'completed'
GROUP BY DATE_TRUNC('month', order_date);

-- āļ„āđ‰āļ™āļŦāļē metric view
SELECT * FROM monthly_revenue WHERE month >= '2026-01-01';

Metric Views āļšāļąāļ‡āļ„āļąāļšāđƒāļŠāđ‰āļ„āļ§āļēāļĄāļŠāļ­āļ”āļ„āļĨāđ‰āļ­āļ‡āđƒāļ™āļāļēāļĢāļ„āļģāļ™āļ§āļ“ āđ€āļĄāļ·āđˆāļ­āļ—āļĩāļĄāļāļēāļĢāđ€āļ‡āļīāļ™āļ„āđ‰āļ™āļŦāļē monthly_revenue āļžāļ§āļāđ€āļ‚āļēāļˆāļ°āđ„āļ”āđ‰āļ•āļąāļ§āđ€āļĨāļ‚āđ€āļ”āļĩāļĒāļ§āļāļąāļšāļ—āļĩāļĄ data science āļ—āļĩāđˆāļāļģāļĨāļąāļ‡āļŠāļĢāđ‰āļēāļ‡āđ‚āļĄāđ€āļ”āļĨ ML

Real-Time Mode āļŠāļģāļŦāļĢāļąāļš PySpark

Spark 4.2 āđāļ™āļ°āļ™āļģ Real-Time Mode āļ—āļĩāđˆāļ—āļģāđƒāļŦāđ‰ streaming workflow āđƒāļ™ PySpark āļ‡āđˆāļēāļĒāļ‚āļķāđ‰āļ™ āļ›āļĢāļ°āļāļēāļĻāļ‚āļ­āļ‡ Databricks āđ€āļ™āđ‰āļ™āļĒāđ‰āļģāļ§āđˆāļēāļŠāļīāđˆāļ‡āļ™āļĩāđ‰āļĨāļ”āļ āļēāļĢāļ°āļāļēāļĢāļ”āļģāđ€āļ™āļīāļ™āļ‡āļēāļ™āļ‚āļ­āļ‡āļāļēāļĢāļˆāļąāļ”āļāļēāļĢ checkpoint āđāļĨāļ°āļāļēāļĢāļāļđāđ‰āļ„āļ·āļ™āļˆāļēāļāļ„āļ§āļēāļĄāļĨāđ‰āļĄāđ€āļŦāļĨāļ§

python
# streaming_pipeline.py
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, window

spark = SparkSession.builder.appName("RealTimeOrders").getOrCreate()

# āđ€āļ›āļīāļ”āđƒāļŠāđ‰āļ‡āļēāļ™ Real-Time Mode āļŠāļģāļŦāļĢāļąāļš streaming āļ—āļĩāđˆāļ‡āđˆāļēāļĒāļ‚āļķāđ‰āļ™
orders_stream = spark.readStream \
    .format("kafka") \
    .option("kafka.bootstrap.servers", "kafka:9092") \
    .option("subscribe", "orders") \
    .option("realtimeMode", "true") \
    .load()

# āļĢāļ§āļĄāļ„āļģāļŠāļąāđˆāļ‡āļ‹āļ·āđ‰āļ­āđƒāļ™ window 5 āļ™āļēāļ—āļĩ
aggregated = orders_stream \
    .withWatermark("event_time", "10 minutes") \
    .groupBy(window(col("event_time"), "5 minutes"), col("region")) \
    .agg({"amount": "sum", "order_id": "count"})

# āđ€āļ‚āļĩāļĒāļ™āđ„āļ›āļĒāļąāļ‡ Delta Lake
aggregated.writeStream \
    .format("delta") \
    .outputMode("append") \
    .option("checkpointLocation", "/checkpoints/orders") \
    .toTable("order_aggregates")

Real-Time Mode āļˆāļąāļ”āļāļēāļĢ checkpoint āļ āļēāļĒāđƒāļ™ āļĨāļ”āđ‚āļ„āđ‰āļ” boilerplate āđāļĨāļ°āļ„āļ§āļēāļĄāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āđƒāļ™āļāļēāļĢāļ”āļģāđ€āļ™āļīāļ™āļ‡āļēāļ™āļŠāļģāļŦāļĢāļąāļšāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™ streaming

āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄāđāļžāļĨāļ•āļŸāļ­āļĢāđŒāļĄ Databricks āđƒāļ™āļ›āļĩ 2026

Databricks āļ‚āļĒāļēāļĒ Spark āļ”āđ‰āļ§āļĒāļŸāļĩāđ€āļˆāļ­āļĢāđŒāđ€āļ‰āļžāļēāļ°āļ—āļĩāđˆāļ•āļ­āļšāļŠāļ™āļ­āļ‡āļ„āļ§āļēāļĄāļ•āđ‰āļ­āļ‡āļāļēāļĢāļ‚āļ­āļ‡āļ­āļ‡āļ„āđŒāļāļĢ āđāļžāļĨāļ•āļŸāļ­āļĢāđŒāļĄāļ™āļĩāđ‰āļĢāļ§āļĄ Delta Lake, Unity Catalog, Mosaic AI āđāļĨāļ° engine OLTP Lakebase āđƒāļŦāļĄāđˆāđ€āļ‚āđ‰āļēāļ”āđ‰āļ§āļĒāļāļąāļ™āđ€āļ›āđ‡āļ™ lakehouse āđāļšāļšāļšāļđāļĢāļ“āļēāļāļēāļĢ

Unity Catalog: āļāļēāļĢāļāļģāļāļąāļšāļ”āļđāđāļĨāđāļšāļšāļĢāļ§āļĄāļĻāļđāļ™āļĒāđŒ

Unity Catalog āđƒāļŦāđ‰āļāļēāļĢāļ„āļ§āļšāļ„āļļāļĄāļāļēāļĢāđ€āļ‚āđ‰āļēāļ–āļķāļ‡āđāļšāļšāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ—āļąāđˆāļ§āļ—āļąāđ‰āļ‡āļ—āļĢāļąāļžāļĒāđŒāļŠāļīāļ™āļ‚āđ‰āļ­āļĄāļđāļĨ āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāļĢāļ°āļ”āļąāļšāļ„āļ­āļĨāļąāļĄāļ™āđŒ āļ•āļąāļ§āļāļĢāļ­āļ‡āđāļ–āļ§ āđāļĨāļ°āļāļēāļĢāļ›āļāļ›āļīāļ”āļ‚āđ‰āļ­āļĄāļđāļĨāļ–āļđāļāļ™āļģāđ„āļ›āđƒāļŠāđ‰āļ­āļĒāđˆāļēāļ‡āļŠāļ­āļ”āļ„āļĨāđ‰āļ­āļ‡āļāļąāļ™āļ—āļąāđˆāļ§āļ—āļąāđ‰āļ‡āļ„āļģāļŠāļąāđˆāļ‡ SQL, notebook āđāļĨāļ°āļ‡āļēāļ™ training ML

sql
-- unity-catalog-policies.sql
-- āđƒāļŦāđ‰āļŠāļīāļ—āļ˜āļīāđŒāļāļēāļĢāļ­āđˆāļēāļ™āļŠāļģāļŦāļĢāļąāļšāļ„āļ­āļĨāļąāļĄāļ™āđŒāđ€āļ‰āļžāļēāļ°
GRANT SELECT (customer_id, order_date, product_id) 
ON TABLE sales.orders 
TO `analyst-team`;

-- āļŠāļĢāđ‰āļēāļ‡ policy āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāļĢāļ°āļ”āļąāļšāđāļ–āļ§
CREATE ROW FILTER policy_regional_access 
ON sales.orders 
AS (region STRING) -> region = current_user_region();

-- āļ™āļģāļ•āļąāļ§āļāļĢāļ­āļ‡āđ„āļ›āđƒāļŠāđ‰
ALTER TABLE sales.orders SET ROW FILTER policy_regional_access ON (region);

āļ”āđ‰āļ§āļĒ Spark āļ—āļĩāđˆāļˆāļąāļ”āļāļēāļĢāđ€āļ­āļ‡ āļŸāļąāļ‡āļāđŒāļŠāļąāļ™āļ—āļĩāđˆāđ€āļ—āļĩāļĒāļšāđ€āļ—āđˆāļēāļ•āđ‰āļ­āļ‡āļāļēāļĢāļāļēāļĢāļœāļŠāļēāļ™āļĢāļ§āļĄāļāļąāļš Apache Ranger āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ„āļ§āļšāļ„āļļāļĄāļāļēāļĢāđ€āļ‚āđ‰āļēāļ–āļķāļ‡ Apache Atlas āļŠāļģāļŦāļĢāļąāļš metadata āđāļĨāļ°āđ‚āļ‹āļĨāļđāļŠāļąāļ™āđāļšāļšāļāļģāļŦāļ™āļ”āđ€āļ­āļ‡āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ•āļīāļ”āļ•āļēāļĄ lineage

āđ€āļĻāļĢāļĐāļāļĻāļēāļŠāļ•āļĢāđŒāļ‚āļ­āļ‡ Serverless Compute

Databricks serverless SQL āļ‚āļˆāļąāļ”āļ•āđ‰āļ™āļ—āļļāļ™ cluster āļ—āļĩāđˆāđ„āļĄāđˆāđ„āļ”āđ‰āđƒāļŠāđ‰āļ‡āļēāļ™ āļ•āļēāļĄāļāļēāļĢāļ§āļīāđ€āļ„āļĢāļēāļ°āļŦāđŒāļĢāļēāļ„āļēāļ‚āļ­āļ‡ Flexera SQL Serverless āļĄāļĩāļĢāļēāļ„āļē $0.70 āļ•āđˆāļ­ DBU āļšāļ™ AWS Premium āđāļ•āđˆāļŠāļģāļŦāļĢāļąāļš BI workload āļ—āļĩāđˆāļĄāļĩāļĨāļąāļāļĐāļ“āļ° bursty āļ•āđ‰āļ™āļ—āļļāļ™āļĢāļ§āļĄāļĄāļąāļāļˆāļ°āļ•āđˆāļģāļāļ§āđˆāļē SQL Pro 20-35% āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļāļŠāļąāđˆāļ§āđ‚āļĄāļ‡āļ—āļĩāđˆāđ„āļĄāđˆāđ„āļ”āđ‰āđƒāļŠāđ‰āļ‡āļēāļ™āļŦāļēāļĒāđ„āļ›

| āļ›āļĢāļ°āđ€āļ āļ— Compute | āļ­āļąāļ•āļĢāļē DBU (AWS Premium) | āđ€āļŦāļĄāļēāļ°āļŠāļģāļŦāļĢāļąāļš | |----------------|------------------------|------------| | Jobs Classic | $0.15 | Batch ETL āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ‚āđ‰āļēāļĄāļ„āļ·āļ™ | | Jobs Serverless | $0.28 | Workload āļ—āļĩāđˆāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡ āļāļģāļŦāļ™āļ”āļāļēāļĢāļ—āļĩāđˆāļ„āļēāļ”āđ€āļ”āļēāđ„āļĄāđˆāđ„āļ”āđ‰ | | SQL Pro | $0.55 | āļ„āļģāļŠāļąāđˆāļ‡ BI āļ—āļĩāđˆāļ•āđˆāļ­āđ€āļ™āļ·āđˆāļ­āļ‡ āļĢāļđāļ›āđāļšāļšāļ—āļĩāđˆāļ„āļēāļ”āđ€āļ”āļēāđ„āļ”āđ‰ | | SQL Serverless | $0.70 | āļ„āļģāļŠāļąāđˆāļ‡āđāļšāļš bursty dashboard āļ•āļēāļĄāļ„āļ§āļēāļĄāļ•āđ‰āļ­āļ‡āļāļēāļĢ | | Model Serving | $0.08 | Endpoint āļŠāļģāļŦāļĢāļąāļš ML inference |

āļāļēāļĢāđāļĨāļāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļ™āļąāđ‰āļ™āļ•āļĢāļ‡āđ„āļ›āļ•āļĢāļ‡āļĄāļē: serverless āļ•āđ‰āļ­āļ‡āļāļēāļĢ premium DBU 20-40% āđ€āļ—āļĩāļĒāļšāļāļąāļš compute āđāļšāļš classic āđāļ•āđˆāļ‚āļˆāļąāļ”āļ•āđ‰āļ™āļ—āļļāļ™āļāļēāļĢāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™ cluster āđāļĨāļ°āļāļēāļĢāđ„āļĄāđˆāđ„āļ”āđ‰āđƒāļŠāđ‰āļ‡āļēāļ™āļ—āļĩāđˆāļ­āļēāļˆāļ„āļĢāļ­āļšāļ‡āļģāļāļēāļĢāđƒāļŠāđ‰āļˆāđˆāļēāļĒāļ—āļąāđ‰āļ‡āļŦāļĄāļ”āļŠāļģāļŦāļĢāļąāļš workload āļ—āļĩāđˆāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡

āļžāļĢāđ‰āļ­āļĄāļ—āļĩāđˆāļˆāļ°āļžāļīāļŠāļīāļ•āļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ Data Engineering āđāļĨāđ‰āļ§āļŦāļĢāļ·āļ­āļĒāļąāļ‡āļ„āļĢāļąāļš?

āļāļķāļāļāļ™āļ”āđ‰āļ§āļĒāļ•āļąāļ§āļˆāļģāļĨāļ­āļ‡āđāļšāļšāđ‚āļ•āđ‰āļ•āļ­āļš, flashcards āđāļĨāļ°āđāļšāļšāļ—āļ”āļŠāļ­āļšāđ€āļ—āļ„āļ™āļīāļ„āļ„āļĢāļąāļš

āļāļēāļĢāđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļšāļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāđ€āļ•āļĢāļĩāļĒāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ

āļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ data engineering āļĄāļąāļāļŠāļģāļĢāļ§āļˆāļāļēāļĢāđāļĨāļāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļĢāļ°āļŦāļ§āđˆāļēāļ‡ Spark āļ—āļĩāđˆāļˆāļąāļ”āļāļēāļĢāđ€āļ­āļ‡āđāļĨāļ°āđāļžāļĨāļ•āļŸāļ­āļĢāđŒāļĄāļ—āļĩāđˆāļĄāļĩāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāđ€āļŠāđˆāļ™ Databricks āļāļēāļĢāđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļšāļ•āđˆāļ­āđ„āļ›āļ™āļĩāđ‰āļ„āļĢāļ­āļšāļ„āļĨāļļāļĄāļŦāļąāļ§āļ‚āđ‰āļ­āļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ—āļĩāđˆāļžāļšāļšāđˆāļ­āļĒāļ—āļĩāđˆāļŠāļļāļ”

āļāļēāļĢāļˆāļąāļ”āļāļēāļĢ Cluster āđāļĨāļ°āļāļēāļĢ Scaling

Spark āļ—āļĩāđˆāļˆāļąāļ”āļāļēāļĢāđ€āļ­āļ‡ āļ•āđ‰āļ­āļ‡āļāļēāļĢāļāļēāļĢāļāļģāļŦāļ™āļ”āļ„āđˆāļē cluster āļ­āļĒāđˆāļēāļ‡āļŠāļąāļ”āđ€āļˆāļ™ āļ—āļĩāļĄāđ€āļĨāļ·āļ­āļāļ›āļĢāļ°āđ€āļ āļ— instance āļāļģāļŦāļ™āļ”āļ„āđˆāļēāļ™āđ‚āļĒāļšāļēāļĒ autoscaling āđāļĨāļ°āļˆāļąāļ”āļāļēāļĢāļāļēāļĢāļŦāļĒāļļāļ”āļŠāļ°āļ‡āļąāļāļ‚āļ­āļ‡ spot instance

python
# spark_cluster_config.py
from pyspark import SparkConf

conf = SparkConf() \
    .setAppName("ProductionETL") \
    .set("spark.executor.instances", "10") \
    .set("spark.executor.cores", "4") \
    .set("spark.executor.memory", "16g") \
    .set("spark.dynamicAllocation.enabled", "true") \
    .set("spark.dynamicAllocation.minExecutors", "2") \
    .set("spark.dynamicAllocation.maxExecutors", "50") \
    .set("spark.shuffle.service.enabled", "true")

Databricks āļ—āļģāđƒāļŦāđ‰āļ„āļ§āļēāļĄāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āļŠāđˆāļ§āļ™āđƒāļŦāļāđˆāđ€āļ›āđ‡āļ™āļ™āļēāļĄāļ˜āļĢāļĢāļĄ āļ™āđ‚āļĒāļšāļēāļĒ cluster āļšāļąāļ‡āļ„āļąāļšāđƒāļŠāđ‰āļĄāļēāļ•āļĢāļāļēāļ™āļ‚āļ­āļ‡āļ­āļ‡āļ„āđŒāļāļĢ āđāļĨāļ° instance āļ—āļĩāđˆāļ›āļĢāļąāļšāđƒāļŦāđ‰āđ€āļŦāļĄāļēāļ°āļŠāļĄāļāļąāļš photon āļˆāļ°āđ€āļĨāļ·āļ­āļāļāļēāļĢāļāļģāļŦāļ™āļ”āļ„āđˆāļēāļ—āļĩāđˆāđ€āļŦāļĄāļēāļ°āļŠāļĄāđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī

Data Lineage āđāļĨāļ° Observability

Databricks Unity Catalog āļ•āļīāļ”āļ•āļēāļĄ lineage āđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļīāļ—āļąāđˆāļ§āļ—āļąāđ‰āļ‡āļ•āļēāļĢāļēāļ‡ notebook āđāļĨāļ°āđ‚āļĄāđ€āļ”āļĨ ML āļ—āļļāļāļāļēāļĢāļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢāļ­āđˆāļēāļ™āđāļĨāļ°āđ€āļ‚āļĩāļĒāļ™āļŠāļĢāđ‰āļēāļ‡āļĢāđˆāļ­āļ‡āļĢāļ­āļĒāļ—āļĩāđˆāļ•āļĢāļ§āļˆāļŠāļ­āļšāđ„āļ”āđ‰

āļ”āđ‰āļ§āļĒ Spark āļ—āļĩāđˆāļˆāļąāļ”āļāļēāļĢāđ€āļ­āļ‡ āļāļēāļĢāļ•āļīāļ”āļ•āļēāļĄ lineage āļ•āđ‰āļ­āļ‡āļāļēāļĢāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄ āđāļ™āļ§āļ—āļēāļ‡āļ—āļąāđˆāļ§āđ„āļ›āļĢāļ§āļĄāļ–āļķāļ‡āļāļēāļĢāļœāļŠāļēāļ™āļĢāļ§āļĄāļāļąāļš Apache Atlas āļŦāļĢāļ·āļ­āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ‚āļ‹āļĨāļđāļŠāļąāļ™āđāļšāļšāļāļģāļŦāļ™āļ”āđ€āļ­āļ‡āđ‚āļ”āļĒāđƒāļŠāđ‰ Spark listener

python
# custom_lineage_listener.py
from pyspark import SparkContext
from pyspark.sql import SparkSession
from datetime import datetime

class LineageListener:
    def __init__(self, spark: SparkSession):
        self.spark = spark
        
    def track_read(self, table_name: str, query_id: str):
        # āļšāļąāļ™āļ—āļķāļāļāļēāļĢāļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢāļ­āđˆāļēāļ™āđ„āļ›āļĒāļąāļ‡ lineage store
        lineage_record = {
            "operation": "read",
            "table": table_name,
            "query_id": query_id,
            "timestamp": datetime.now().isoformat(),
            "user": self.spark.sparkContext.sparkUser()
        }
        self._persist_lineage(lineage_record)
    
    def track_write(self, table_name: str, query_id: str, row_count: int):
        # āļšāļąāļ™āļ—āļķāļāļāļēāļĢāļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āļžāļĢāđ‰āļ­āļĄāļˆāļģāļ™āļ§āļ™āđāļ–āļ§āļ—āļĩāđˆāđ„āļ”āđ‰āļĢāļąāļšāļœāļĨāļāļĢāļ°āļ—āļš
        lineage_record = {
            "operation": "write",
            "table": table_name,
            "query_id": query_id,
            "rows_affected": row_count,
            "timestamp": datetime.now().isoformat()
        }
        self._persist_lineage(lineage_record)

āļ•āļąāļ§āđ€āļĨāļ·āļ­āļ Storage Layer

āļ—āļąāđ‰āļ‡āļŠāļ­āļ‡āđāļ™āļ§āļ—āļēāļ‡āļĢāļ­āļ‡āļĢāļąāļšāļĢāļđāļ›āđāļšāļšāļ•āļēāļĢāļēāļ‡āđāļšāļšāđ€āļ›āļīāļ” Delta Lake āļĄāļēāļˆāļēāļ Databricks āđāļ•āđˆāđ€āļ›āđ‡āļ™āđ‚āļ­āđ€āļžāđˆāļ™āļ‹āļ­āļĢāđŒāļŠāļ­āļĒāđˆāļēāļ‡āļŠāļĄāļšāļđāļĢāļ“āđŒ Apache Iceberg āđƒāļŦāđ‰āļ—āļēāļ‡āđ€āļĨāļ·āļ­āļāļžāļĢāđ‰āļ­āļĄāļāļēāļĢāļŠāļ™āļąāļšāļŠāļ™āļļāļ™āļˆāļēāļāļŠāļļāļĄāļŠāļ™āļ—āļĩāđˆāđāļ‚āđ‡āļ‡āđāļāļĢāđˆāļ‡

| āļŸāļĩāđ€āļˆāļ­āļĢāđŒ | Delta Lake | Apache Iceberg | |--------|------------|----------------| | ACID Transactions | āđƒāļŠāđˆ | āđƒāļŠāđˆ | | Time Travel | āđƒāļŠāđˆ | āđƒāļŠāđˆ | | Schema Evolution | āđƒāļŠāđˆ | āđƒāļŠāđˆ | | Partition Evolution | āļˆāļģāļāļąāļ” | āđ€āļ•āđ‡āļĄāļĢāļđāļ›āđāļšāļš | | Hidden Partitioning | āđ„āļĄāđˆ | āđƒāļŠāđˆ | | āļāļēāļĢāļœāļŠāļēāļ™āļĢāļ§āļĄāļŦāļĨāļąāļ | Databricks | āļŦāļĨāļēāļĒ engine |

āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ§āļīāđ€āļ„āļĢāļēāļ°āļŦāđŒāđ€āļŠāļīāļ‡āļĨāļķāļāđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļĢāļđāļ›āđāļšāļšāđ€āļŦāļĨāđˆāļēāļ™āļĩāđ‰ āļ”āļđāļāļēāļĢāđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļš Delta Lake vs Apache Iceberg

āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ—āļĩāđˆāļžāļšāļšāđˆāļ­āļĒ

āļ„āļģāļ–āļēāļĄāļ•āđˆāļ­āđ„āļ›āļ™āļĩāđ‰āļ›āļĢāļēāļāļāļšāđˆāļ­āļĒāđƒāļ™āļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ data engineering āđāļ•āđˆāļĨāļ°āļ„āļģāļ–āļēāļĄāļĢāļ§āļĄāļ–āļķāļ‡āļšāļĢāļīāļšāļ—āļ—āļĩāđˆāļœāļđāđ‰āļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ•āđ‰āļ­āļ‡āļāļēāļĢāđāļĨāļ°āļāļĢāļ­āļšāļāļēāļĢāļ•āļ­āļšāļ—āļĩāđˆāļĄāļĩāđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡

āļ„āļģāļ–āļēāļĄāļ—āļĩāđˆ 1: āđ€āļĄāļ·āđˆāļ­āđ„āļŦāļĢāđˆāļ„āļ§āļĢāđ€āļĨāļ·āļ­āļ Spark āļ—āļĩāđˆāļˆāļąāļ”āļāļēāļĢāđ€āļ­āļ‡āđāļ—āļ™ Databricks?

āļŠāļīāđˆāļ‡āļ—āļĩāđˆāļœāļđāđ‰āļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ›āļĢāļ°āđ€āļĄāļīāļ™: āļ„āļ§āļēāļĄāļ•āļĢāļ°āļŦāļ™āļąāļāļ”āđ‰āļēāļ™āļ•āđ‰āļ™āļ—āļļāļ™ āļ„āļ§āļēāļĄāđ€āļ›āđ‡āļ™āļœāļđāđ‰āđƒāļŦāļāđˆāđƒāļ™āļāļēāļĢāļ”āļģāđ€āļ™āļīāļ™āļ‡āļēāļ™ āđāļĨāļ°āļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāđƒāļˆāđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļ‚āđ‰āļ­āļˆāļģāļāļąāļ”āļ‚āļ­āļ‡āļ­āļ‡āļ„āđŒāļāļĢ

āļāļĢāļ­āļšāļāļēāļĢāļ•āļ­āļšāļ—āļĩāđˆāđāļ‚āđ‡āļ‡āđāļāļĢāđˆāļ‡:

  • āļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–āđƒāļ™āļāļēāļĢāļ„āļēāļ”āđ€āļ”āļēāļ•āđ‰āļ™āļ—āļļāļ™: Spark āļ—āļĩāđˆāļˆāļąāļ”āļāļēāļĢāđ€āļ­āļ‡āļ‚āļˆāļąāļ”āļ„āđˆāļēāđƒāļŠāđ‰āļˆāđˆāļēāļĒāļ•āđˆāļ­ DBU āļŠāļģāļŦāļĢāļąāļšāļ­āļ‡āļ„āđŒāļāļĢāļ—āļĩāđˆāļĄāļĩ workload āļ—āļĩāđˆāļŠāļ­āļ”āļ„āļĨāđ‰āļ­āļ‡āđāļĨāļ°āļ„āļēāļ”āđ€āļ”āļēāđ„āļ”āđ‰āļ—āļĩāđˆāļ—āļģāļ‡āļēāļ™āļ•āļĨāļ­āļ” 24 āļŠāļąāđˆāļ§āđ‚āļĄāļ‡ āļāļēāļĢāđƒāļŠāđ‰āļˆāđˆāļēāļĒāđ€āļ‡āļīāļ™āļ—āļļāļ™āļšāļ™ reserved instance āļĄāļąāļāļˆāļ°āļ–āļđāļāļāļ§āđˆāļēāļāļēāļĢāļāļģāļŦāļ™āļ”āļĢāļēāļ„āļēāļ•āļēāļĄāļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™
  • āļ­āļ˜āļīāļ›āđ„āļ•āļĒāļ‚āđ‰āļ­āļĄāļđāļĨ: āļšāļēāļ‡āļ­āļļāļ•āļŠāļēāļŦāļāļĢāļĢāļĄāļ•āđ‰āļ­āļ‡āļāļēāļĢāđƒāļŦāđ‰āļ‚āđ‰āļ­āļĄāļđāļĨāļ­āļĒāļđāđˆāđƒāļ™āļŠāļ–āļēāļ™āļ—āļĩāđˆāļŦāļĢāļ·āļ­āđƒāļ™āđ€āļ‚āļ•āļ­āļģāļ™āļēāļˆāļĻāļēāļĨāđ€āļ‰āļžāļēāļ° āļāļēāļĢāļ•āļīāļ”āļ•āļąāđ‰āļ‡āļ—āļĩāđˆāļˆāļąāļ”āļāļēāļĢāđ€āļ­āļ‡āļšāļ™āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āđ€āļ‰āļžāļēāļ°āļ•āļ­āļšāļŠāļ™āļ­āļ‡āļ‚āđ‰āļ­āļāļģāļŦāļ™āļ”āđ€āļŦāļĨāđˆāļēāļ™āļĩāđ‰
  • āļ„āļ§āļēāļĄāđ€āļŠāļĩāđˆāļĒāļ§āļŠāļēāļāļ—āļĩāđˆāļĄāļĩāļ­āļĒāļđāđˆ: āļ—āļĩāļĄāļ—āļĩāđˆāļĄāļĩāļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–āđƒāļ™āļāļēāļĢāļ”āļģāđ€āļ™āļīāļ™āļ‡āļēāļ™ Kubernetes āđāļĨāļ° Spark āļ—āļĩāđˆāđāļ‚āđ‡āļ‡āđāļāļĢāđˆāļ‡āļ­āļēāļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļĒāļ·āļ”āļŦāļĒāļļāđˆāļ™āļ‚āļ­āļ‡āļāļēāļĢāļ•āļīāļ”āļ•āļąāđ‰āļ‡āļ—āļĩāđˆāļˆāļąāļ”āļāļēāļĢāđ€āļ­āļ‡
  • Workload āļŦāļĨāļēāļĒ engine: āļ­āļ‡āļ„āđŒāļāļĢāļ—āļĩāđˆāđƒāļŠāđ‰ Spark āļĢāđˆāļ§āļĄāļāļąāļš Presto, Flink āļŦāļĢāļ·āļ­ engine āđāļšāļšāļāļģāļŦāļ™āļ”āđ€āļ­āļ‡āđ„āļ”āđ‰āļĢāļąāļšāļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļˆāļēāļāļāļēāļĢāļˆāļąāļ”āļāļēāļĢ cluster āđāļšāļšāļĢāļ§āļĄāļĻāļđāļ™āļĒāđŒāļœāđˆāļēāļ™ YARN āļŦāļĢāļ·āļ­ Kubernetes

āļ„āļģāļ–āļēāļĄāļ—āļĩāđˆ 2: Databricks āļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž Spark āļ­āļĒāđˆāļēāļ‡āđ„āļĢ?

āļŠāļīāđˆāļ‡āļ—āļĩāđˆāļœāļđāđ‰āļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ›āļĢāļ°āđ€āļĄāļīāļ™: āļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāđƒāļˆāđ€āļāļĩāđˆāļĒāļ§āļāļąāļš Delta Engine, Photon āđāļĨāļ°āļāļēāļĢāļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āđ€āļ‰āļžāļēāļ°āđāļžāļĨāļ•āļŸāļ­āļĢāđŒāļĄ

āļ›āļĢāļ°āđ€āļ”āđ‡āļ™āļŠāļģāļ„āļąāļāļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļ„āļĢāļ­āļšāļ„āļĨāļļāļĄ:

  • Photon: Engine āļāļēāļĢāļ—āļģāļ‡āļēāļ™āđāļšāļš vectorized āļ”āļąāđ‰āļ‡āđ€āļ”āļīāļĄ C++ āļ—āļĩāđˆāđāļ—āļ™āļ—āļĩāđˆ engine Spark SQL āļ—āļĩāđˆāđƒāļŠāđ‰ JVM āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢāļ—āļĩāđˆāļĢāļ­āļ‡āļĢāļąāļš āđƒāļŦāđ‰āļāļēāļĢāđ€āļĢāđˆāļ‡āļ„āļ§āļēāļĄāđ€āļĢāđ‡āļ§ 2-8 āđ€āļ—āđˆāļēāļŠāļģāļŦāļĢāļąāļš workload āļ—āļĩāđˆāļŦāļ™āļąāļāļ”āđ‰āļēāļ™ scan āđāļĨāļ° aggregation
  • Delta Cache: Layer āļāļēāļĢāđāļ„āļŠāļ—āļĩāđˆāđƒāļŠāđ‰ SSD āļ—āļĩāđˆāđ€āļĢāđˆāļ‡āļāļēāļĢāļ­āđˆāļēāļ™āļ‹āđ‰āļģāļˆāļēāļ cloud storage
  • Adaptive Query Execution: āđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™āļ—āļĩāđˆāļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āļ‚āļ­āļ‡ AQE āļ‚āļ­āļ‡ Spark āļžāļĢāđ‰āļ­āļĄāļāļēāļĢāļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢ data skew āđāļĨāļ°āļāļēāļĢāđ€āļĨāļ·āļ­āļāļāļĨāļĒāļļāļ—āļ˜āđŒ join
  • āļāļēāļĢāļ›āļĢāļąāļšāļ›āļĢāļļāļ‡ IO: āļāļēāļĢāļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āļāļēāļĢāļˆāļąāļ”āļ§āļēāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī āļĢāļ§āļĄāļ–āļķāļ‡ Z-ordering āđāļĨāļ° file compaction

āļ„āļģāļ–āļēāļĄāļ—āļĩāđˆ 3: āļ­āļ˜āļīāļšāļēāļĒāļāļēāļĢāđāļĨāļāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļ‚āļ­āļ‡ serverless compute

āļŠāļīāđˆāļ‡āļ—āļĩāđˆāļœāļđāđ‰āļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ›āļĢāļ°āđ€āļĄāļīāļ™: āļ—āļąāļāļĐāļ°āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđāļšāļšāļˆāļģāļĨāļ­āļ‡āļ•āđ‰āļ™āļ—āļļāļ™āđāļĨāļ°āļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāđƒāļˆāđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļĨāļąāļāļĐāļ“āļ° workload

python
# cost_comparison.py
def estimate_monthly_cost(workload_type: str, daily_dbus: float, hours_active: float):
    """āđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļšāļ•āđ‰āļ™āļ—āļļāļ™ serverless vs classic compute"""
    
    # āļ­āļąāļ•āļĢāļē DBU (tier AWS Premium)
    rates = {
        "sql_classic": 0.55,
        "sql_serverless": 0.70,
        "jobs_classic": 0.15,
        "jobs_serverless": 0.28
    }
    
    # Cluster classic āļĄāļĩāļ•āđ‰āļ™āļ—āļļāļ™āļ‚āļ“āļ°āđ„āļĄāđˆāđ„āļ”āđ‰āđƒāļŠāđ‰āļ‡āļēāļ™
    cluster_hours_per_day = 10  # Cluster āļ—āļģāļ‡āļēāļ™ 10 āļŠāļąāđˆāļ§āđ‚āļĄāļ‡āļŠāļģāļŦāļĢāļąāļšāļ‡āļēāļ™āļˆāļĢāļīāļ‡ 4 āļŠāļąāđˆāļ§āđ‚āļĄāļ‡
    serverless_hours = hours_active  # āļˆāđˆāļēāļĒāđ€āļ‰āļžāļēāļ° compute āļˆāļĢāļīāļ‡
    
    classic_monthly = daily_dbus * cluster_hours_per_day * rates[f"{workload_type}_classic"] * 30
    serverless_monthly = daily_dbus * serverless_hours * rates[f"{workload_type}_serverless"] * 30
    
    return {
        "classic": classic_monthly,
        "serverless": serverless_monthly,
        "savings_percent": (classic_monthly - serverless_monthly) / classic_monthly * 100
    }

Serverless āđ€āļŦāļĄāļēāļ°āļŠāļģāļŦāļĢāļąāļš workload āļ—āļĩāđˆ bursty āđāļĨāļ°āļ„āļēāļ”āđ€āļ”āļēāđ„āļĄāđˆāđ„āļ”āđ‰ Classic compute āļŠāļ™āļ°āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ—āļĩāđˆāļ•āđˆāļ­āđ€āļ™āļ·āđˆāļ­āļ‡āđāļĨāļ°āļ„āļēāļ”āđ€āļ”āļēāđ„āļ”āđ‰āļ‹āļķāđˆāļ‡ cluster āļ—āļģāļ‡āļēāļ™āđƒāļāļĨāđ‰āļ„āļ§āļēāļĄāļˆāļļ

āļ„āļģāļ–āļēāļĄāļ—āļĩāđˆ 4: Auto CDC āļ‚āļ­āļ‡ Spark 4.2 āđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļšāļāļąāļšāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­ CDC āđāļšāļšāļ”āļąāđ‰āļ‡āđ€āļ”āļīāļĄāļ­āļĒāđˆāļēāļ‡āđ„āļĢ?

āļŠāļīāđˆāļ‡āļ—āļĩāđˆāļœāļđāđ‰āļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ›āļĢāļ°āđ€āļĄāļīāļ™: āļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāđƒāļˆāđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļĢāļđāļ›āđāļšāļš change data capture āđāļĨāļ°āļāļēāļĢāđāļĨāļāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđƒāļ™āļāļēāļĢāļ”āļģāđ€āļ™āļīāļ™āļ‡āļēāļ™

āļ›āļĢāļ°āđ€āļ”āđ‡āļ™āđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļš:

āļāļēāļĢāđ€āļ›āļīāļ”āļ•āļąāļ§ Apache Spark 4.2 āļāļąāļ‡ CDC āđ„āļ§āđ‰āđƒāļ™ query engine:

| āļ”āđ‰āļēāļ™ | Spark 4.2 Auto CDC | Debezium/Kafka | CDC Timestamp āđāļšāļšāļāļģāļŦāļ™āļ”āđ€āļ­āļ‡ | |------|-------------------|----------------|---------------------------| | āļ„āļ§āļēāļĄāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āđƒāļ™āļāļēāļĢāļ•āļīāļ”āļ•āļąāđ‰āļ‡ | āļ•āđˆāļģ | āļŠāļđāļ‡ | āļ›āļēāļ™āļāļĨāļēāļ‡ | | āļ„āļ§āļēāļĄāļŦāļ™āđˆāļ§āļ‡āđāļšāļš Real-time | āļ™āļēāļ—āļĩ | āļ§āļīāļ™āļēāļ—āļĩ | āļ™āļēāļ—āļĩāļ–āļķāļ‡āļŠāļąāđˆāļ§āđ‚āļĄāļ‡ | | āđ‚āļŦāļĨāļ”āļšāļ™ Database āļ•āđ‰āļ™āļ—āļēāļ‡ | āđ„āļĄāđˆāļĄāļĩ | āļāļēāļĢāļ­āđˆāļēāļ™ log | āļ•āļēāļĄ query | | āļāļēāļĢāļ„āđ‰āļ™āļŦāļēāļ›āļĢāļ°āļ§āļąāļ•āļī | āđƒāļ™āļ•āļąāļ§ | āļ•āđ‰āļ­āļ‡āļāļēāļĢ retention | āļˆāļģāļāļąāļ” | | Schema Evolution | āļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī | āļ•āđ‰āļ­āļ‡āļāļēāļĢāļāļēāļĢāļāļģāļŦāļ™āļ”āļ„āđˆāļē | āļ”āđ‰āļ§āļĒāļ•āļ™āđ€āļ­āļ‡ |

Auto CDC āļĒāļ­āļ”āđ€āļĒāļĩāđˆāļĒāļĄāļŠāļģāļŦāļĢāļąāļš workload āļ§āļīāđ€āļ„āļĢāļēāļ°āļŦāđŒāļ—āļĩāđˆāļ„āļ§āļēāļĄāļŦāļ™āđˆāļ§āļ‡āļĢāļ°āļ”āļąāļšāļ™āļēāļ—āļĩāļĒāļ­āļĄāļĢāļąāļšāđ„āļ”āđ‰ āļŠāļģāļŦāļĢāļąāļšāļ‚āđ‰āļ­āļāļģāļŦāļ™āļ”āļ•āđˆāļģāļāļ§āđˆāļēāļ§āļīāļ™āļēāļ—āļĩ Debezium āļāļąāļš Kafka āļĒāļąāļ‡āļ„āļ‡āđ€āļ›āđ‡āļ™āđāļ™āļ§āļ—āļēāļ‡āļĄāļēāļ•āļĢāļāļēāļ™

āļāļĢāļ­āļšāļāļēāļĢāļ•āļąāļ”āļŠāļīāļ™āđƒāļˆāđ€āļŠāļīāļ‡āļ›āļāļīāļšāļąāļ•āļī

āđƒāļŠāđ‰āļāļĢāļ­āļšāļ™āļĩāđ‰āđ€āļĄāļ·āđˆāļ­āļ›āļĢāļ°āđ€āļĄāļīāļ™ Spark vs Databricks āļŠāļģāļŦāļĢāļąāļšāļ­āļ‡āļ„āđŒāļāļĢāļŦāļĢāļ·āļ­āđ‚āļ›āļĢāđ€āļˆāļāļ•āđŒāđ€āļ‰āļžāļēāļ°

āđ€āļĨāļ·āļ­āļ Spark āļ—āļĩāđˆāļˆāļąāļ”āļāļēāļĢāđ€āļ­āļ‡āđ€āļĄāļ·āđˆāļ­:

  • āļ—āļĩāļĄāļĄāļĩāļ„āļ§āļēāļĄāđ€āļŠāļĩāđˆāļĒāļ§āļŠāļēāļ Spark āđāļĨāļ° Kubernetes āļ—āļĩāđˆāļĄāļĩāļ­āļĒāļđāđˆ
  • Workload āļ„āļēāļ”āđ€āļ”āļēāđ„āļ”āđ‰āđāļĨāļ°āļ—āļģāļ‡āļēāļ™āļ­āļĒāđˆāļēāļ‡āļ•āđˆāļ­āđ€āļ™āļ·āđˆāļ­āļ‡
  • āļ‚āđ‰āļ­āļĄāļđāļĨāļ•āđ‰āļ­āļ‡āļ­āļĒāļđāđˆāđƒāļ™āļŠāļ–āļēāļ™āļ—āļĩāđˆāļŦāļĢāļ·āļ­āđƒāļ™āļ āļđāļĄāļīāļ āļēāļ„āđ€āļ‰āļžāļēāļ°
  • āļ­āļ‡āļ„āđŒāļāļĢāļ”āļģāđ€āļ™āļīāļ™āļ‡āļēāļ™āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āđāļžāļĨāļ•āļŸāļ­āļĢāđŒāļĄāļ‚āđ‰āļ­āļĄāļđāļĨāļ­āļĒāļđāđˆāđāļĨāđ‰āļ§
  • āļ„āļ§āļēāļĄāļ­āđˆāļ­āļ™āđ„āļŦāļ§āļ”āđ‰āļēāļ™āļ•āđ‰āļ™āļ—āļļāļ™āļĄāļēāļāļāļ§āđˆāļēāļ„āļ§āļēāļĄāļŠāļ°āļ”āļ§āļāđƒāļ™āļāļēāļĢāļ”āļģāđ€āļ™āļīāļ™āļ‡āļēāļ™

āđ€āļĨāļ·āļ­āļ Databricks āđ€āļĄāļ·āđˆāļ­:

  • āđ€āļ§āļĨāļēāđƒāļ™āļāļēāļĢāļ™āļģāđ„āļ›āļœāļĨāļīāļ•āļŠāļģāļ„āļąāļāļāļ§āđˆāļēāļ•āđ‰āļ™āļ—āļļāļ™āļ•āđˆāļ­ query
  • āļ—āļĩāļĄāļ‚āļēāļ”āļ„āļ§āļēāļĄāđ€āļŠāļĩāđˆāļĒāļ§āļŠāļēāļāđƒāļ™āļāļēāļĢāļ”āļģāđ€āļ™āļīāļ™āļ‡āļēāļ™ Spark āđ€āļŠāļīāļ‡āļĨāļķāļ
  • āļ‚āđ‰āļ­āļāļģāļŦāļ™āļ”āļ”āđ‰āļēāļ™ governance āđāļĨāļ° compliance āļ•āđ‰āļ­āļ‡āļāļēāļĢāļĢāđˆāļ­āļ‡āļĢāļ­āļĒāļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļš
  • Workflow ML āļ•āđ‰āļ­āļ‡āļāļēāļĢ experiment tracking āđāļĨāļ° model serving āđāļšāļšāļšāļđāļĢāļ“āļēāļāļēāļĢ
  • BI workload āđ„āļ”āđ‰āļĢāļąāļšāļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļˆāļēāļ serverless scaling

āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāđ€āļ•āļĢāļĩāļĒāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢ pipeline Apache Airflow āđāļĨāļ°āļĢāļđāļ›āđāļšāļš ETL āđ‚āļĄāļ”āļđāļĨāļ„āļģāļ–āļēāļĄāļ‚āļ­āļ‡ SharpSkill āđƒāļŦāđ‰āļāļēāļĢāļāļķāļāļāļ™āļ—āļĩāđˆāļĄāļĩāđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡

āđ€āļĢāļīāđˆāļĄāļāļķāļāļ‹āđ‰āļ­āļĄāđ€āļĨāļĒ!

āļ—āļ”āļŠāļ­āļšāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ‚āļ­āļ‡āļ„āļļāļ“āļ”āđ‰āļ§āļĒāļ•āļąāļ§āļˆāļģāļĨāļ­āļ‡āļŠāļąāļĄāļ āļēāļĐāļ“āđŒāđāļĨāļ°āđāļšāļšāļ—āļ”āļŠāļ­āļšāđ€āļ—āļ„āļ™āļīāļ„āļ„āļĢāļąāļš

āļšāļ—āļŠāļĢāļļāļ›

  • Apache Spark 4.2 āļ™āļģāđ€āļŠāļ™āļ­ Auto CDC, Metric Views āđāļĨāļ° Real-Time Mode āđ€āļ›āđ‡āļ™āļŸāļĩāđ€āļˆāļ­āļĢāđŒ native āļĨāļ”āļ„āļ§āļēāļĄāļ•āđ‰āļ­āļ‡āļāļēāļĢāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļ āļēāļĒāļ™āļ­āļ
  • Databricks āđ€āļžāļīāđˆāļĄ governance āļ‚āļ­āļ‡ Unity Catalog āļāļēāļĢāđ€āļĢāđˆāļ‡āļ„āļ§āļēāļĄāđ€āļĢāđ‡āļ§āļ”āđ‰āļ§āļĒ Photon āđāļĨāļ° serverless compute āļšāļ™āļžāļ·āđ‰āļ™āļāļēāļ™ Spark
  • Spark āļ—āļĩāđˆāļˆāļąāļ”āļāļēāļĢāđ€āļ­āļ‡āđƒāļŦāđ‰āļ•āđ‰āļ™āļ—āļļāļ™āļ•āđˆāļģāļāļ§āđˆāļēāļŠāļģāļŦāļĢāļąāļš workload āļ—āļĩāđˆāļ„āļēāļ”āđ€āļ”āļēāđ„āļ”āđ‰āđāļĨāļ°āļ„āļ§āļēāļĄāļĒāļ·āļ”āļŦāļĒāļļāđˆāļ™āļ”āđ‰āļēāļ™āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄāļŠāļđāļ‡āļŠāļļāļ”
  • Databricks āļĨāļ”āļ āļēāļĢāļ°āļāļēāļĢāļ”āļģāđ€āļ™āļīāļ™āļ‡āļēāļ™āđāļĨāļ°āđ€āļĢāđˆāļ‡āđ€āļ§āļĨāļēāđƒāļ™āļāļēāļĢāļ™āļģāđ„āļ›āļœāļĨāļīāļ•āļŠāļģāļŦāļĢāļąāļšāļ—āļĩāļĄāļ—āļĩāđˆāđ„āļĄāđˆāļĄāļĩāļ„āļ§āļēāļĄāđ€āļŠāļĩāđˆāļĒāļ§āļŠāļēāļ Spark āđ€āļŠāļīāļ‡āļĨāļķāļ
  • āļ„āļ§āļēāļĄāļŠāļģāđ€āļĢāđ‡āļˆāđƒāļ™āļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ•āđ‰āļ­āļ‡āļāļēāļĢāļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāđƒāļˆāļ—āļąāđ‰āļ‡āļ„āļ§āļēāļĄāđāļ•āļāļ•āđˆāļēāļ‡āļ—āļēāļ‡āđ€āļ—āļ„āļ™āļīāļ„āđāļĨāļ°āļāļēāļĢāđāļĨāļāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļ—āļēāļ‡āļ˜āļļāļĢāļāļīāļˆāļ—āļĩāđˆāļ‚āļąāļšāđ€āļ„āļĨāļ·āđˆāļ­āļ™āļāļēāļĢāđ€āļĨāļ·āļ­āļāđāļžāļĨāļ•āļŸāļ­āļĢāđŒāļĄ
  • āļāļēāļĢāđ€āļĨāļ·āļ­āļāļ—āļĩāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡āļ‚āļķāđ‰āļ™āļ­āļĒāļđāđˆāļāļąāļšāļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–āļ‚āļ­āļ‡āļ—āļĩāļĄ āđāļšāļšāļˆāļģāļĨāļ­āļ‡āļ•āđ‰āļ™āļ—āļļāļ™ āļ‚āđ‰āļ­āļāļģāļŦāļ™āļ” compliance āđāļĨāļ°āļĨāļąāļāļĐāļ“āļ° workload
Anthony Fillion-Maillet

āđ€āļ‚āļĩāļĒāļ™āđ‚āļ”āļĒ

Anthony Fillion-Maillet

āļ™āļąāļāļžāļąāļ’āļ™āļēāļŸāļđāļĨāļŠāđāļ•āļ āļœāļđāđ‰āļāđˆāļ­āļ•āļąāđ‰āļ‡ SharpSkill

āđ€āļ›āđ‡āļ™āļ™āļąāļāļžāļąāļ’āļ™āļēāļŸāļđāļĨāļŠāđāļ•āļāļĄāļēāļāļ§āđˆāļē 10 āļ›āļĩ āļ”āļđāđāļĨ SharpSkill āđāļĨāļ°āļĢāļąāļšāļœāļīāļ”āļŠāļ­āļšāļ—āļļāļāļŠāļīāđˆāļ‡āļ—āļĩāđˆāđ€āļœāļĒāđāļžāļĢāđˆāļ—āļĩāđˆāļ™āļĩāđˆ

āļ­āļąāļ›āđ€āļ”āļ•āđ€āļĄāļ·āđˆāļ­ 19 āļŠāļīāļ‡āļŦāļēāļ„āļĄ 2569

āđāļŠāļĢāđŒ

āļšāļ—āļ„āļ§āļēāļĄāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡

Delta Lake vs Apache Iceberg 2026: āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄ Lakehouse āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ

Delta Lake vs Apache Iceberg 2026: āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄ Lakehouse āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ

āļ„āļđāđˆāļĄāļ·āļ­āļ‰āļšāļąāļšāļŠāļĄāļšāļđāļĢāļ“āđŒāđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļš Delta Lake āđāļĨāļ° Apache Iceberg āļŠāļģāļŦāļĢāļąāļšāļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄ lakehouse āļĢāļ§āļĄāļ–āļķāļ‡āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ‚āļ„āđ‰āļ” āđāļ™āļ§āļ›āļāļīāļšāļąāļ•āļīāļ—āļĩāđˆāļ”āļĩ āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ data engineering 2026

āđāļœāļ™āļ āļēāļžāļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄ Snowflake āđāļŠāļ”āļ‡āļŠāļąāđ‰āļ™ storage, compute āļ‚āļ­āļ‡ virtual warehouse āđāļĨāļ° cloud services

Snowflake āļ›āļĩ 2026: āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄ SQL āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ Data Engineer

āļ„āļđāđˆāļĄāļ·āļ­āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄ Snowflake āļ›āļĩ 2026 āļŠāļģāļŦāļĢāļąāļš data engineer: storage āļāļąāļš compute āđāļĒāļāļāļąāļ™āļ­āļĒāđˆāļēāļ‡āđ„āļĢ, virtual warehouses āđāļĨāļ° micro-partitions āļ—āļģāļ‡āļēāļ™āļ­āļĒāđˆāļēāļ‡āđ„āļĢ āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ—āļĩāđˆāļ§āļąāļ”āļ›āļĢāļ°āļŠāļšāļāļēāļĢāļ“āđŒāļĢāļ°āļšāļš production āļˆāļĢāļīāļ‡

Apache Airflow pipeline orchestration DAGs tutorial 2026

Apache Airflow āđƒāļ™āļ›āļĩ 2026: āļāļēāļĢāļˆāļąāļ”āļāļēāļĢ Pipeline, DAG āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ‡āļēāļ™ Data Engineering

āļ„āļđāđˆāļĄāļ·āļ­ Apache Airflow 3.2 āļ‰āļšāļąāļšāļŠāļĄāļšāļđāļĢāļ“āđŒ: āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™ DAG āļ”āđ‰āļ§āļĒ Task SDK, āļĢāļđāļ›āđāļšāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢ data pipeline, asset partition, dynamic task mapping, native async āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ‡āļēāļ™āļŠāļģāļŦāļĢāļąāļšāļ§āļīāļĻāļ§āļāļĢāļ‚āđ‰āļ­āļĄāļđāļĨāđƒāļ™āļ›āļĩ 2026