apache-airflow-providers-databricks 6.10.0rc1__tar.gz → 6.11.0rc1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of apache-airflow-providers-databricks might be problematic. Click here for more details.
- {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/PKG-INFO +8 -9
- {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/README.rst +4 -4
- {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/__init__.py +1 -1
- {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/get_provider_info.py +2 -1
- {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/hooks/databricks_base.py +18 -0
- {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/operators/databricks.py +9 -1
- {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/operators/databricks_workflow.py +26 -1
- {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/pyproject.toml +4 -5
- {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/LICENSE +0 -0
- {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/hooks/__init__.py +0 -0
- {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/hooks/databricks.py +0 -0
- {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/hooks/databricks_sql.py +0 -0
- {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/operators/__init__.py +0 -0
- {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/operators/databricks_repos.py +0 -0
- {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/operators/databricks_sql.py +0 -0
- {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/plugins/__init__.py +0 -0
- {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/plugins/databricks_workflow.py +0 -0
- {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/sensors/__init__.py +0 -0
- {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/sensors/databricks_partition.py +0 -0
- {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/sensors/databricks_sql.py +0 -0
- {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/triggers/__init__.py +0 -0
- {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/triggers/databricks.py +0 -0
- {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/utils/__init__.py +0 -0
- {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/utils/databricks.py +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: apache-airflow-providers-databricks
|
|
3
|
-
Version: 6.
|
|
3
|
+
Version: 6.11.0rc1
|
|
4
4
|
Summary: Provider package apache-airflow-providers-databricks for Apache Airflow
|
|
5
5
|
Keywords: airflow-provider,databricks,airflow,integration
|
|
6
6
|
Author-email: Apache Software Foundation <dev@airflow.apache.org>
|
|
7
7
|
Maintainer-email: Apache Software Foundation <dev@airflow.apache.org>
|
|
8
|
-
Requires-Python: ~=3.
|
|
8
|
+
Requires-Python: ~=3.9
|
|
9
9
|
Description-Content-Type: text/x-rst
|
|
10
10
|
Classifier: Development Status :: 5 - Production/Stable
|
|
11
11
|
Classifier: Environment :: Console
|
|
@@ -15,7 +15,6 @@ Classifier: Intended Audience :: System Administrators
|
|
|
15
15
|
Classifier: Framework :: Apache Airflow
|
|
16
16
|
Classifier: Framework :: Apache Airflow :: Provider
|
|
17
17
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
19
18
|
Classifier: Programming Language :: Python :: 3.9
|
|
20
19
|
Classifier: Programming Language :: Python :: 3.10
|
|
21
20
|
Classifier: Programming Language :: Python :: 3.11
|
|
@@ -34,8 +33,8 @@ Requires-Dist: azure-identity>=1.3.1 ; extra == "azure-identity"
|
|
|
34
33
|
Requires-Dist: apache-airflow-providers-common-sql ; extra == "common.sql"
|
|
35
34
|
Requires-Dist: databricks-sdk==0.10.0 ; extra == "sdk"
|
|
36
35
|
Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
|
|
37
|
-
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.
|
|
38
|
-
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.
|
|
36
|
+
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.11.0/changelog.html
|
|
37
|
+
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.11.0
|
|
39
38
|
Project-URL: Slack Chat, https://s.apache.org/airflow-slack
|
|
40
39
|
Project-URL: Source Code, https://github.com/apache/airflow
|
|
41
40
|
Project-URL: Twitter, https://twitter.com/ApacheAirflow
|
|
@@ -88,7 +87,7 @@ Provides-Extra: sdk
|
|
|
88
87
|
|
|
89
88
|
Package ``apache-airflow-providers-databricks``
|
|
90
89
|
|
|
91
|
-
Release: ``6.
|
|
90
|
+
Release: ``6.11.0.rc1``
|
|
92
91
|
|
|
93
92
|
|
|
94
93
|
`Databricks <https://databricks.com/>`__
|
|
@@ -101,7 +100,7 @@ This is a provider package for ``databricks`` provider. All classes for this pro
|
|
|
101
100
|
are in ``airflow.providers.databricks`` python package.
|
|
102
101
|
|
|
103
102
|
You can find package information and changelog for the provider
|
|
104
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.
|
|
103
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.11.0/>`_.
|
|
105
104
|
|
|
106
105
|
Installation
|
|
107
106
|
------------
|
|
@@ -110,7 +109,7 @@ You can install this package on top of an existing Airflow 2 installation (see `
|
|
|
110
109
|
for the minimum Airflow version supported) via
|
|
111
110
|
``pip install apache-airflow-providers-databricks``
|
|
112
111
|
|
|
113
|
-
The package supports the following python versions: 3.
|
|
112
|
+
The package supports the following python versions: 3.9,3.10,3.11,3.12
|
|
114
113
|
|
|
115
114
|
Requirements
|
|
116
115
|
------------
|
|
@@ -149,4 +148,4 @@ Dependent package
|
|
|
149
148
|
============================================================================================================ ==============
|
|
150
149
|
|
|
151
150
|
The changelog for the provider package can be found in the
|
|
152
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.
|
|
151
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.11.0/changelog.html>`_.
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
|
|
43
43
|
Package ``apache-airflow-providers-databricks``
|
|
44
44
|
|
|
45
|
-
Release: ``6.
|
|
45
|
+
Release: ``6.11.0.rc1``
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
`Databricks <https://databricks.com/>`__
|
|
@@ -55,7 +55,7 @@ This is a provider package for ``databricks`` provider. All classes for this pro
|
|
|
55
55
|
are in ``airflow.providers.databricks`` python package.
|
|
56
56
|
|
|
57
57
|
You can find package information and changelog for the provider
|
|
58
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.
|
|
58
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.11.0/>`_.
|
|
59
59
|
|
|
60
60
|
Installation
|
|
61
61
|
------------
|
|
@@ -64,7 +64,7 @@ You can install this package on top of an existing Airflow 2 installation (see `
|
|
|
64
64
|
for the minimum Airflow version supported) via
|
|
65
65
|
``pip install apache-airflow-providers-databricks``
|
|
66
66
|
|
|
67
|
-
The package supports the following python versions: 3.
|
|
67
|
+
The package supports the following python versions: 3.9,3.10,3.11,3.12
|
|
68
68
|
|
|
69
69
|
Requirements
|
|
70
70
|
------------
|
|
@@ -103,4 +103,4 @@ Dependent package
|
|
|
103
103
|
============================================================================================================ ==============
|
|
104
104
|
|
|
105
105
|
The changelog for the provider package can be found in the
|
|
106
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.
|
|
106
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.11.0/changelog.html>`_.
|
|
@@ -29,7 +29,7 @@ from airflow import __version__ as airflow_version
|
|
|
29
29
|
|
|
30
30
|
__all__ = ["__version__"]
|
|
31
31
|
|
|
32
|
-
__version__ = "6.
|
|
32
|
+
__version__ = "6.11.0"
|
|
33
33
|
|
|
34
34
|
if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
|
|
35
35
|
"2.8.0"
|
|
@@ -28,8 +28,9 @@ def get_provider_info():
|
|
|
28
28
|
"name": "Databricks",
|
|
29
29
|
"description": "`Databricks <https://databricks.com/>`__\n",
|
|
30
30
|
"state": "ready",
|
|
31
|
-
"source-date-epoch":
|
|
31
|
+
"source-date-epoch": 1728485027,
|
|
32
32
|
"versions": [
|
|
33
|
+
"6.11.0",
|
|
33
34
|
"6.10.0",
|
|
34
35
|
"6.9.0",
|
|
35
36
|
"6.8.0",
|
|
@@ -561,6 +561,13 @@ class BaseDatabricksHook(BaseHook):
|
|
|
561
561
|
try:
|
|
562
562
|
for attempt in self._get_retry_object():
|
|
563
563
|
with attempt:
|
|
564
|
+
self.log.debug(
|
|
565
|
+
"Initiating %s request to %s with payload: %s, headers: %s",
|
|
566
|
+
method,
|
|
567
|
+
url,
|
|
568
|
+
json,
|
|
569
|
+
headers,
|
|
570
|
+
)
|
|
564
571
|
response = request_func(
|
|
565
572
|
url,
|
|
566
573
|
json=json if method in ("POST", "PATCH") else None,
|
|
@@ -569,6 +576,8 @@ class BaseDatabricksHook(BaseHook):
|
|
|
569
576
|
headers=headers,
|
|
570
577
|
timeout=self.timeout_seconds,
|
|
571
578
|
)
|
|
579
|
+
self.log.debug("Response Status Code: %s", response.status_code)
|
|
580
|
+
self.log.debug("Response text: %s", response.text)
|
|
572
581
|
response.raise_for_status()
|
|
573
582
|
return response.json()
|
|
574
583
|
except RetryError:
|
|
@@ -615,6 +624,13 @@ class BaseDatabricksHook(BaseHook):
|
|
|
615
624
|
try:
|
|
616
625
|
async for attempt in self._a_get_retry_object():
|
|
617
626
|
with attempt:
|
|
627
|
+
self.log.debug(
|
|
628
|
+
"Initiating %s request to %s with payload: %s, headers: %s",
|
|
629
|
+
method,
|
|
630
|
+
url,
|
|
631
|
+
json,
|
|
632
|
+
headers,
|
|
633
|
+
)
|
|
618
634
|
async with request_func(
|
|
619
635
|
url,
|
|
620
636
|
json=json,
|
|
@@ -622,6 +638,8 @@ class BaseDatabricksHook(BaseHook):
|
|
|
622
638
|
headers={**headers, **self.user_agent_header},
|
|
623
639
|
timeout=self.timeout_seconds,
|
|
624
640
|
) as response:
|
|
641
|
+
self.log.debug("Response Status Code: %s", response.status_code)
|
|
642
|
+
self.log.debug("Response text: %s", response.text)
|
|
625
643
|
response.raise_for_status()
|
|
626
644
|
return await response.json()
|
|
627
645
|
except RetryError:
|
|
@@ -1045,7 +1045,15 @@ class DatabricksTaskBaseOperator(BaseOperator, ABC):
|
|
|
1045
1045
|
|
|
1046
1046
|
def _get_databricks_task_id(self, task_id: str) -> str:
|
|
1047
1047
|
"""Get the databricks task ID using dag_id and task_id. Removes illegal characters."""
|
|
1048
|
-
|
|
1048
|
+
task_id = f"{self.dag_id}__{task_id.replace('.', '__')}"
|
|
1049
|
+
if len(task_id) > 100:
|
|
1050
|
+
self.log.warning(
|
|
1051
|
+
"The generated task_key '%s' exceeds 100 characters and will be truncated by the Databricks API. "
|
|
1052
|
+
"This will cause failure when trying to monitor the task. task_key is generated by ",
|
|
1053
|
+
"concatenating dag_id and task_id.",
|
|
1054
|
+
task_id,
|
|
1055
|
+
)
|
|
1056
|
+
return task_id
|
|
1049
1057
|
|
|
1050
1058
|
@property
|
|
1051
1059
|
def _databricks_workflow_task_group(self) -> DatabricksWorkflowTaskGroup | None:
|
|
@@ -52,7 +52,7 @@ class WorkflowRunMetadata:
|
|
|
52
52
|
"""
|
|
53
53
|
|
|
54
54
|
conn_id: str
|
|
55
|
-
job_id:
|
|
55
|
+
job_id: int
|
|
56
56
|
run_id: int
|
|
57
57
|
|
|
58
58
|
|
|
@@ -116,6 +116,7 @@ class _CreateDatabricksWorkflowOperator(BaseOperator):
|
|
|
116
116
|
self.notebook_params = notebook_params or {}
|
|
117
117
|
self.tasks_to_convert = tasks_to_convert or []
|
|
118
118
|
self.relevant_upstreams = [task_id]
|
|
119
|
+
self.workflow_run_metadata: WorkflowRunMetadata | None = None
|
|
119
120
|
super().__init__(task_id=task_id, **kwargs)
|
|
120
121
|
|
|
121
122
|
def _get_hook(self, caller: str) -> DatabricksHook:
|
|
@@ -212,12 +213,36 @@ class _CreateDatabricksWorkflowOperator(BaseOperator):
|
|
|
212
213
|
|
|
213
214
|
self._wait_for_job_to_start(run_id)
|
|
214
215
|
|
|
216
|
+
self.workflow_run_metadata = WorkflowRunMetadata(
|
|
217
|
+
self.databricks_conn_id,
|
|
218
|
+
job_id,
|
|
219
|
+
run_id,
|
|
220
|
+
)
|
|
221
|
+
|
|
215
222
|
return {
|
|
216
223
|
"conn_id": self.databricks_conn_id,
|
|
217
224
|
"job_id": job_id,
|
|
218
225
|
"run_id": run_id,
|
|
219
226
|
}
|
|
220
227
|
|
|
228
|
+
def on_kill(self) -> None:
|
|
229
|
+
if self.workflow_run_metadata:
|
|
230
|
+
run_id = self.workflow_run_metadata.run_id
|
|
231
|
+
job_id = self.workflow_run_metadata.job_id
|
|
232
|
+
|
|
233
|
+
self._hook.cancel_run(run_id)
|
|
234
|
+
self.log.info(
|
|
235
|
+
"Run: %(run_id)s of job_id: %(job_id)s was requested to be cancelled.",
|
|
236
|
+
{"run_id": run_id, "job_id": job_id},
|
|
237
|
+
)
|
|
238
|
+
else:
|
|
239
|
+
self.log.error(
|
|
240
|
+
"""
|
|
241
|
+
Error: Workflow Run metadata is not populated, so the run was not canceled. This could be due
|
|
242
|
+
to the workflow not being started or an error in the workflow creation process.
|
|
243
|
+
"""
|
|
244
|
+
)
|
|
245
|
+
|
|
221
246
|
|
|
222
247
|
class DatabricksWorkflowTaskGroup(TaskGroup):
|
|
223
248
|
"""
|
|
@@ -28,7 +28,7 @@ build-backend = "flit_core.buildapi"
|
|
|
28
28
|
|
|
29
29
|
[project]
|
|
30
30
|
name = "apache-airflow-providers-databricks"
|
|
31
|
-
version = "6.
|
|
31
|
+
version = "6.11.0.rc1"
|
|
32
32
|
description = "Provider package apache-airflow-providers-databricks for Apache Airflow"
|
|
33
33
|
readme = "README.rst"
|
|
34
34
|
authors = [
|
|
@@ -47,14 +47,13 @@ classifiers = [
|
|
|
47
47
|
"Framework :: Apache Airflow",
|
|
48
48
|
"Framework :: Apache Airflow :: Provider",
|
|
49
49
|
"License :: OSI Approved :: Apache Software License",
|
|
50
|
-
"Programming Language :: Python :: 3.8",
|
|
51
50
|
"Programming Language :: Python :: 3.9",
|
|
52
51
|
"Programming Language :: Python :: 3.10",
|
|
53
52
|
"Programming Language :: Python :: 3.11",
|
|
54
53
|
"Programming Language :: Python :: 3.12",
|
|
55
54
|
"Topic :: System :: Monitoring",
|
|
56
55
|
]
|
|
57
|
-
requires-python = "~=3.
|
|
56
|
+
requires-python = "~=3.9"
|
|
58
57
|
dependencies = [
|
|
59
58
|
"aiohttp>=3.9.2, <4",
|
|
60
59
|
"apache-airflow-providers-common-sql>=1.10.0rc0",
|
|
@@ -68,8 +67,8 @@ dependencies = [
|
|
|
68
67
|
]
|
|
69
68
|
|
|
70
69
|
[project.urls]
|
|
71
|
-
"Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.
|
|
72
|
-
"Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.
|
|
70
|
+
"Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.11.0"
|
|
71
|
+
"Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.11.0/changelog.html"
|
|
73
72
|
"Bug Tracker" = "https://github.com/apache/airflow/issues"
|
|
74
73
|
"Source Code" = "https://github.com/apache/airflow"
|
|
75
74
|
"Slack Chat" = "https://s.apache.org/airflow-slack"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|