{"id":23259,"library":"apache-airflow-providers-apache-pinot","title":"Apache Airflow Provider for Apache Pinot","description":"This provider allows Apache Airflow to integrate with Apache Pinot, enabling data transfers, SQL execution, and cluster management. Current version 4.10.2 works with Python >=3.10 and Airflow >=2.10. Releases are on demand.","status":"active","version":"4.10.2","language":"python","source_language":"en","source_url":"https://github.com/apache/airflow/tree/main/airflow/providers/apache/pinot","tags":["airflow","apache-pinot","data-integration","etl"],"install":[{"cmd":"pip install apache-airflow-providers-apache-pinot","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Required runtime dependency","package":"apache-airflow","optional":false},{"reason":"Required for DBAPI hook","package":"pinotdb","optional":false},{"reason":"Required for cluster management hooks (PinotAdminHook)","package":"pinot-admin","optional":true}],"imports":[{"note":"Old import path removed in provider version 2.0.0","wrong":"from airflow.hooks.pinot_admin import PinotAdminHook","symbol":"PinotAdminHook","correct":"from airflow.providers.apache.pinot.hooks.pinot_admin import PinotAdminHook"},{"note":"Old import path no longer supported","wrong":"from airflow.hooks.pinot_hook import PinotDbApiHook","symbol":"PinotDbApiHook","correct":"from airflow.providers.apache.pinot.hooks.pinot import PinotDbApiHook"},{"symbol":"PinotTableCreateOrUpdateOperator","correct":"from airflow.providers.apache.pinot.operators.pinot_table_create_or_update import PinotTableCreateOrUpdateOperator"}],"quickstart":{"code":"from datetime import datetime\nfrom airflow import DAG\nfrom airflow.providers.apache.pinot.hooks.pinot import PinotDbApiHook\nfrom airflow.providers.apache.pinot.operators.pinot_table_create_or_update import PinotTableCreateOrUpdateOperator\n\nwith DAG(\n    dag_id='pinot_example',\n    start_date=datetime(2025, 1, 1),\n    catchup=False,\n) as dag:\n    # Example: create a Pinot table\n    create_table = PinotTableCreateOrUpdateOperator(\n        task_id='create_pinot_table',\n        table_config={\n            'tableName': 'myTable',\n            'tableType': 'OFFLINE',\n            'segmentsConfig': {\n                'replication': '1',\n                'schemaName': 'mySchema'\n            }\n        },\n        pinot_admin_hook=PinotAdminHook(pinot_admin_host='http://localhost:9000'),\n    )","lang":"python","description":"Basic DAG using Pinot operators and hooks. Requires a running Pinot cluster."},"warnings":[{"fix":"Update imports to use the new provider.module path: from airflow.providers.apache.pinot.hooks.pinot import PinotDbApiHook","message":"Removal of 'pinot_hook' import path: In provider version 2.0.0, the Pinot hook was moved from airflow.hooks.pinot_hook to airflow.providers.apache.pinot.hooks.pinot. Direct imports from the old path will fail.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Upgrade Apache Airflow to version >=2.10.","message":"Minimum Airflow version increased to 2.10. Starting from provider version 4.0.0, Airflow >=2.10 is required. Older Airflow versions will raise ImportError.","severity":"breaking","affected_versions":">=4.0.0"},{"fix":"When creating a Pinot connection in Airflow UI, set 'Extra' to '{\"password\": \"...\"}' instead of using the 'Password' field.","message":"Password provided via extra parameter not connection: The PinotDbApiHook does not support password through the standard connection ``password`` field. Instead, pass it via the ``extra`` parameter as JSON: ``{\"password\": \"mypassword\"}``. Otherwise authentication may silently fail.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Change import to: from airflow.providers.apache.pinot.hooks.pinot import PinotDbApiHook","cause":"Trying to import PinotDbApiHook from the old path after upgrading provider.","error":"ModuleNotFoundError: No module named 'airflow.hooks.pinot_hook'"},{"fix":"Install the provider and its dependency: pip install apache-airflow-providers-apache-pinot","cause":"The Pinot connection type is not registered because the provider is not installed or missing pinotdb dependency.","error":"airflow.exceptions.AirflowException: The conn_type 'pinot' is not supported"},{"fix":"Use the correct class name: PinotDbApiHook (introduced in provider 2.0.0). Also ensure the provider is updated: pip install --upgrade apache-airflow-providers-apache-pinot","cause":"The hook class is named differently (e.g., 'PinotHook' in older versions) or the module is corrupted.","error":"AttributeError: module 'airflow.providers.apache.pinot.hooks.pinot' has no attribute 'PinotDbApiHook'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}