跳转到主要内容

在命名空间集合中对Databricks Python Wheel开发任务进行富集,以增强Invoke CLI任务运行器。

项目描述

CircleCI

Invoke Databricks Wheel Tasks

在命名空间集合中对Databricks Python Wheel开发任务进行富集,以增强Invoke CLI任务运行器。


入门指南

pip install invoke-databricks-wheel-tasks

此程序将同时安装invokedatabricks-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-filejinja-template 的具体细节完全取决于您。

config-file 是您配置 jinja-template 需要的最小数据结构,您只需使用 Jinja 控制结构(例如 if-elsefor-loop 等)来遍历它并向 jinja-template 填充数据。

运行作业

这将使用 job-id 创建您作业的手动触发。

触发返回一个 run-id,然后轮询此 run-id,直到状态达到结束状态。

然后,调用 databricks runs get-output --run-id 以检索并输出到控制台的 errorerror_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 (12.2 kB 查看哈希值)

上传时间 源代码

构建发行版

invoke_databricks_wheel_tasks-0.8.0-py3-none-any.whl (11.5 kB 查看哈希值)

上传时间 Python 3