{"id":23257,"library":"apache-airflow-providers-apache-iceberg","title":"Apache Airflow Provider for Apache Iceberg","description":"Apache Airflow provider for Apache Iceberg, enabling interaction with Iceberg tables via Airflow. Current version 2.0.2 requires Python >=3.10 and Airflow >=2.10.0. Released monthly alongside other providers.","status":"active","version":"2.0.2","language":"python","source_language":"en","source_url":"https://github.com/apache/airflow/tree/main/airflow/providers/apache/iceberg","tags":["apache-airflow","iceberg","provider","etl","data-lakehouse"],"install":[{"cmd":"pip install apache-airflow-providers-apache-iceberg","lang":"bash","label":"Default install"}],"dependencies":[{"reason":"Core dependency; provider requires Airflow >=2.10.0","package":"apache-airflow","optional":false},{"reason":"Python Iceberg client library for table operations","package":"pyiceberg","optional":false}],"imports":[{"note":"Wrong module path; the operator is in the `iceberg` submodule.","wrong":"from airflow.providers.apache.iceberg.operators import IcebergOperator","symbol":"IcebergOperator","correct":"from airflow.providers.apache.iceberg.operators.iceberg import IcebergOperator"},{"note":"","wrong":"","symbol":"IcebergHook","correct":"from airflow.providers.apache.iceberg.hooks.iceberg import IcebergHook"}],"quickstart":{"code":"from datetime import datetime\nfrom airflow import DAG\nfrom airflow.providers.apache.iceberg.operators.iceberg import IcebergOperator\n\ndag = DAG(\n    'iceberg_quickstart',\n    start_date=datetime(2024, 1, 1),\n    schedule_interval=None,\n    catchup=False,\n)\n\nwith dag:\n    append_data = IcebergOperator(\n        task_id='append_to_table',\n        conn_id='iceberg_default',\n        catalog_name='default',\n        namespace='default',\n        table='my_table',\n        sql='INSERT INTO my_table VALUES (1, \"test\")',\n    )","lang":"python","description":"Define a DAG that appends data to an Iceberg table using an IcebergOperator."},"warnings":[{"fix":"Ensure an Iceberg connection (e.g., type 'Iceberg') is created in Airflow and reference its `conn_id` in all operators.","message":"In version 2.0.0, the `conn_id` parameter is now required and must reference a connection configured for Iceberg. Previously, some operators defaulted to a generic connection.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Use `IcebergOperator` only for catalog-level operations (DDL, simple DML). For heavy transformations, use SparkSubmitOperator or similar.","message":"The operator `IcebergOperator` is not a direct replacement for Spark or Flink SQL on Iceberg. It sends SQL queries to a configured catalog (e.g., via PyIceberg), not to a compute engine.","severity":"gotcha","affected_versions":"all"},{"fix":"Use `from airflow.providers.apache.iceberg.hooks.iceberg import IcebergHook`.","message":"The hook class was renamed from `IcebergHook` to `IcebergHook` (remains same), but the old import path `airflow.providers.apache.iceberg.hooks.iceberg_hook` is deprecated since 1.1.0.","severity":"deprecated","affected_versions":">=1.1.0,<2.0.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Install provider: `pip install apache-airflow-providers-apache-iceberg`. Use correct import: `from airflow.providers.apache.iceberg.operators.iceberg import IcebergOperator`.","cause":"Provider not installed or wrong import path.","error":"Broken DAG: No module named 'airflow.providers.apache.iceberg.operators'"},{"fix":"Create an Iceberg connection in Airflow UI (Admin -> Connections) with Conn Id = `iceberg_default`, Conn Type = `Iceberg`, and appropriate extras (e.g., URI, catalog).","cause":"Missing Airflow connection for Iceberg.","error":"AirflowException: The conn_id `iceberg_default` is not defined"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}