You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by po...@apache.org on 2026/03/04 10:56:41 UTC
(airflow) branch main updated: Made sqlalchemy dependency optional for hive (#62329)
This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 050c35cd3b2 Made sqlalchemy dependency optional for hive (#62329)
050c35cd3b2 is described below
commit 050c35cd3b206a0b412a93b828f59ddd35a7f7fd
Author: Justin Pakzad <11...@users.noreply.github.com>
AuthorDate: Wed Mar 4 05:56:33 2026 -0500
Made sqlalchemy dependency optional for hive (#62329)
Co-authored-by: Jarek Potiuk <ja...@potiuk.com>
---
.../hive/src/airflow/providers/apache/hive/hooks/hive.py | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/providers/apache/hive/src/airflow/providers/apache/hive/hooks/hive.py b/providers/apache/hive/src/airflow/providers/apache/hive/hooks/hive.py
index 20bc8677593..5745c5e4a61 100644
--- a/providers/apache/hive/src/airflow/providers/apache/hive/hooks/hive.py
+++ b/providers/apache/hive/src/airflow/providers/apache/hive/hooks/hive.py
@@ -29,10 +29,9 @@ from tempfile import NamedTemporaryFile, TemporaryDirectory
from typing import TYPE_CHECKING, Any, Literal
from deprecated import deprecated
-from sqlalchemy.engine import URL
from typing_extensions import overload
-from airflow.exceptions import AirflowProviderDeprecationWarning
+from airflow.exceptions import AirflowOptionalProviderFeatureException, AirflowProviderDeprecationWarning
from airflow.providers.common.compat.sdk import (
AIRFLOW_VAR_NAME_FORMAT_MAPPING,
AirflowException,
@@ -47,6 +46,7 @@ from airflow.utils.helpers import as_flattened_list
if TYPE_CHECKING:
import pandas as pd
import polars as pl
+ from sqlalchemy.engine import URL
HIVE_QUEUE_PRIORITIES = ["VERY_HIGH", "HIGH", "NORMAL", "LOW", "VERY_LOW"]
@@ -1140,6 +1140,13 @@ class HiveServer2Hook(DbApiHook):
@property
def sqlalchemy_url(self) -> URL:
"""Return a `sqlalchemy.engine.URL` object constructed from the connection."""
+ try:
+ from sqlalchemy.engine import URL
+ except ImportError:
+ raise AirflowOptionalProviderFeatureException(
+ "sqlalchemy is required to generate the connection URL. "
+ "Install it with: pip install 'apache-airflow-providers-apache-hive[sqlalchemy]'"
+ )
conn = self.get_connection(self.get_conn_id())
extra = conn.extra_dejson or {}