在命名空间集合中对Databricks Python Wheel开发任务进行富集,以增强Invoke CLI任务运行器。
项目描述
Invoke Databricks Wheel Tasks
在命名空间集合中对Databricks Python Wheel开发任务进行富集,以增强Invoke CLI任务运行器。
入门指南
pip install invoke-databricks-wheel-tasks
此程序将同时安装invoke
和databricks-cli
。
Databricks CLI配置
假设您将遵循提供的文档来设置databricks-cli
。
https://docs.databricks.com/dev-tools/cli/index.html
有两种选项:配置文件或环境变量。
配置文件
您需要设置一个个人访问令牌。然后运行以下命令
databricks configure --profile yourprofilename --token
Databricks Host (should begin with https://): https://myorganisation.cloud.databricks.com/
Token:
这将创建一个配置文件在您的家目录下~/.databrickscfg
如下
cat ~/.databrickscfg
[yourprofilename]
host = https://myorganisation.cloud.databricks.com/
token = dapi0123456789abcdef0123456789abcdef
jobs-api-version = 2.1
环境变量
在某些CI系统上,将机密导出到环境变量比在CI服务器上拥有包含机密的配置文件更好。
导出以下内容,并databricks-cli
将拾取它
DATABRICKS_HOST=https://myorganisation.cloud.databricks.com/
DATABRICKS_TOKEN=dapi0123456789abcdef0123456789abcdef
DATABRICKS_JOBS_API_VERSION="2.1
Invoke设置
tasks.py
from invoke import task
from invoke_databricks_wheel_tasks import * # noqa
一旦您的tasks.py
设置如下,invoke
将具有额外的命令
λ invoke --list
Available tasks:
dbfs-wheel-path Generate the target path (including wheelname) this wheel should be uploaded to.
dbfs-wheel-path-root Generate the target path (excluding wheelname) this wheel should be uploaded to.
define-job Generate templated Job definition and upsert by Job Name in template.
poetry-wheel-name Display the name of the wheel file poetry would build.
run-job Trigger default job associated for this project.
upload Upload wheel artifact to DBFS.
任务
上传
此任务将使用dbfs
清空上传路径,然后从dist/
复制构建的wheel。该项目假设您正在使用poetry
或您的wheel构建输出位于dist/
。
如果您有其他要求,请提交拉取请求。
定义作业
您可能想运行invoke --help define-job
以获取帮助文档。
有几个参数被缩写,我们将在讨论它们如何协同工作之前解释。
--jinja-template
或-j
:这是一个 Jinja2 模板,必须解析为有效的 Databricks 作业 JSON 负载规范。--config-file
或-c
:这是一个用于定义配置的 JSON 或 YAML 文件,用于参数化上述jinja-template
。此config-file
也可以是 Jinja 模板,以注入仅在运行时才知道的值,例如您当前所在的 git 功能分支。默认情况下,它被视为普通配置文件而不是 Jinja 模板,除非指定了环境变量
标志(请参阅下一节)。--environment-variable
或-e
:此标志可以重复多次以指定多个值。它采用key=value
格式的字符串。- 例如:
-e branch=$(git branch --show-current) -e main_wheel=$MAIN -e utils_wheel=$UTILS
- 例如:
因此,一个示例命令可能如下所示:
invoke define-job \
-j jobs/base-job-template.json.j2 \
-c jobs/customer360-etl-job.yaml \
-e branch=$(git branch --show-current) \
-e main_whl=$(invoke dbfs-wheel-path) \
-e utils_whl=$UTILS_DBFS_WHEEL_PATH
然后,-e
值可以模板化到 customer360-etl-job.yml
。然后解析该 YAML 文件并将其注入到 base-job-template.json.j2
。
然后,它将检查您工作区中的作业列表,查看是否存在具有相同名称的作业,并执行 创建或替换作业 操作。这期望 config-file
具有键 name
以便能够交叉检查现有作业列表。
美中不足的是,config-file
和 jinja-template
的具体细节完全取决于您。
config-file
是您配置 jinja-template
需要的最小数据结构,您只需使用 Jinja 控制结构(例如 if-else
、for-loop
等)来遍历它并向 jinja-template
填充数据。
运行作业
这将使用 job-id
创建您作业的手动触发。
触发返回一个 run-id
,然后轮询此 run-id
,直到状态达到结束状态。
然后,调用 databricks runs get-output --run-id
以检索并输出到控制台的 error
、error_trace
和/或 logs
。
贡献
在所有时间,您都有权分支此项目,按照您的意愿进行更改,然后
pip install https://github.com/user/repository/archive/branch.zip
Stackoverflow:从 GitHub 分支安装 pip
这样,您可以在临时或内部运行您自己的自定义分支,并将此项目作为起点。这是完全可以的。
但是,如果您想将您的更改回馈,那么请打开一个 "跨分支" 的拉取请求。
一旦您的更改合并并发布,您就可以退回到 pip install
此包的规范版本。
如果您不确定如何进行更改或是否应该投入时间和精力,那么请打开一个问题,我们可以进行聊天以分类问题。
资源
先前艺术
项目详情
invoke_databricks_wheel_tasks-0.8.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a01b2367c2964e002b6bbaf6f87298c6e5aef759a3e48ed204c0eb1ee2dcc92d |
|
MD5 | be8595620ff74607397c8f4289ce1f41 |
|
BLAKE2b-256 | 5e2f205459115c83b0c1cd12348b0fd6dd4333148bd001412b35b41464278372 |
invoke_databricks_wheel_tasks-0.8.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 732bd26ec1f5bdf56a372ae5ebbecee7f5df17f1d7dc1fd7da92a89e701f1a42 |
|
MD5 | dc6c218df807f59e8d91cc1899c5069d |
|
BLAKE2b-256 | f295c637de5099109f6b2193ea79ef8f7d1e6d183c70d725c97c07391c59db5f |