pipenv install cdktf-cdktf-provider-databricks
Typescript
使用 npm
(对于 TypeScript),将 Terraform CDK Databricks 提供程序安装到 CDKTF 项目中,以生成 Azure Databricks 资源。 此外,安装 Node.js 的 TypeScript 定义包,以使用 Buffer
类将代码写入笔记本。 为此,请运行以下内容:
npm install @cdktf/provider-databricks --force
npm install --save-dev @types/node
将 main.py
文件(对于 Python)或 main.ts
文件(对于 TypeScript)的内容替换为以下代码。 此代码使用 Azure Databricks 工作区对 CDKTF 进行身份验证,然后生成笔记本以及运行该笔记本的作业。 若要查看此代码的语法文档,请参阅适用于 Python 或 TypeScript 的 Terraform CDK Databricks 提供程序构造参考。
Python
#!/usr/bin/env python
from unicodedata import name
from constructs import Construct
from cdktf import App, TerraformStack, TerraformOutput
from cdktf_cdktf_provider_databricks import *
import vars
from base64 import b64encode
class MyStack(TerraformStack):
def __init__(self, scope: Construct, ns: str):
super().__init__(scope, ns)
DatabricksProvider(
scope = self,
id = "databricksAuth"
current_user = DataDatabricksCurrentUser(
scope = self,
id_ = "currentUser"
# Define the notebook.
notebook = Notebook(
scope = self,
id_ = "notebook",
path = f"{current_user.home}/CDKTF/{vars.resource_prefix}-notebook.py",
language = "PYTHON",
content_base64 = b64encode(b"display(spark.range(10))").decode("UTF-8")
# Define the job to run the notebook.
job = Job(
scope = self,
id_ = "job",
name = f"{vars.resource_prefix}-job",
new_cluster = JobNewCluster(
num_workers = vars.num_workers,
spark_version = vars.spark_version,
node_type_id = vars.node_type_id
notebook_task = JobNotebookTask(
notebook_path = f"{current_user.home}/CDKTF/{vars.resource_prefix}-notebook.py"
email_notifications = JobEmailNotifications(
on_success = [ current_user.user_name ],
on_failure = [ current_user.user_name ]
# Output the notebook and job URLs.
TerraformOutput(
scope = self,
id = "Notebook URL",
value = notebook.url
TerraformOutput(
scope = self,
id = "Job URL",
value = job.url
app = App()
MyStack(app, "cdktf-python")
app.synth()
Typescript
import { Construct } from "constructs";
import { App, TerraformOutput, TerraformStack } from "cdktf";
import { DatabricksProvider, DataDatabricksCurrentUser, Notebook, Job } from "@cdktf/provider-databricks";
import * as vars from "./vars";
class MyStack extends TerraformStack {
constructor(scope: Construct, name: string) {
super(scope, name);
new DatabricksProvider(this, "databricksAuth", {})
const currentUser = new DataDatabricksCurrentUser(this, "currentUser", {});
// Define the notebook.
const notebook = new Notebook(this, "notebook", {
path: `${currentUser.home}/CDKTF/${vars.resourcePrefix}-notebook.py`,
language: "PYTHON",
contentBase64: Buffer.from("display(spark.range(10))", "utf8").toString("base64")
// Define the job to run the notebook.
const job = new Job(this, "job", {
name: `${vars.resourcePrefix}-job`,
newCluster: {
numWorkers: vars.numWorkers,
sparkVersion: vars.sparkVersion,
nodeTypeId: vars.nodeTypeId
notebookTask: {
notebookPath: `${currentUser.home}/CDKTF/${vars.resourcePrefix}-notebook.py`
emailNotifications: {
onSuccess: [ currentUser.userName ],
onFailure: [ currentUser.userName ]
// Output the notebook and job URLs.
new TerraformOutput(this, "Notebook URL", {
value: notebook.url
new TerraformOutput(this, "Job URL", {
value: job.url
const app = new App();
new MyStack(app, "cdktf-demo");
app.synth();
在 main.py
(对于 Python)或 main.ts
(对于 TypeScript)所在的同一目录中创建名为 vars.py
(对于 Python)或 vars.ts
(对于 TypeScript)的文件。 将以下值替换为你自己的值,以指定资源前缀和群集设置,例如辅助角色数、Spark 运行时版本字符串和节点类型。
Python
#!/usr/bin/env python
resource_prefix = "cdktf-demo"
num_workers = 1
spark_version = "10.4.x-scala2.12"
node_type_id = "Standard_D3_v2"
Typescript
export const resourcePrefix = "cdktf-demo"
export const numWorkers = 1
export const sparkVersion = "10.4.x-scala2.12"
export const nodeTypeId = "Standard_D3_v2"
步骤 3:部署资源
在此步骤中,将使用 CDKTF CLI 将定义的笔记本和运行该笔记本的作业部署到现有的 Azure Databricks 工作区中。
生成 CDKTF 项目的等效 Terraform 代码。 为此,请运行 cdktf synth
命令。
cdktf synth
在进行更改之前,可以查看挂起的资源更改。 运行以下内容:
cdktf diff
通过运行 cdktf deploy
命令部署笔记本和作业。
cdktf deploy
当提示批准时,按 Enter。 Terraform 将创建笔记本和作业并将其部署到工作区中。
步骤 4:与资源交互
在此步骤中,将在运行指定笔记本的 Azure Databricks 工作区中运行作业。
若要查看作业将在工作区中运行的笔记本,请复制 cdk deploy
命令输出中显示的“笔记本 URL”链接,并将其粘贴到 Web 浏览器的地址栏中。
若要查看在工作区中运行笔记本的作业,请复制 cdk deploy
命令输出中显示的“作业 URL”链接,并将其粘贴到 Web 浏览器的地址栏中。
若要运行作业,请单击作业页上的“立即运行”按钮。
(可选)步骤 5:对资源进行更改
在此可选步骤中,将更改笔记本的代码、重新部署已更改的笔记本,然后使用作业重新运行已更改的笔记本。
如果不想对笔记本进行任何更改,请跳到步骤 6:清理。
在 main.py
文件(对于 Python)或 main.ts
文件(对于 TypeScript)中,将 notebook
变量声明从以下内容:
Python
notebook = Notebook(
scope = self,
id_ = "notebook",
path = f"{current_user.home}/CDKTF/{vars.resource_prefix}-notebook.py",
language = "PYTHON",
content_base64 = b64encode(b"display(spark.range(10))").decode("UTF-8")
Typescript
const notebook = new Notebook(this, "notebook", {
path: currentUser.home + "/CDKTF/" + vars.resourcePrefix + "-notebook.py",
language: "PYTHON",
contentBase64: Buffer.from("display(spark.range(10))", "utf8").toString("base64")
更改为以下内容:
Python
notebook = Notebook(
scope = self,
id_ = "notebook",
path = f"{current_user.home}/CDKTF/{vars.resource_prefix}-notebook.py",
language = "PYTHON",
content_base64 = b64encode(b'''
data = [
{ "Category": 'A', "ID": 1, "Value": 121.44 },
{ "Category": 'B', "ID": 2, "Value": 300.01 },
{ "Category": 'C', "ID": 3, "Value": 10.99 },
{ "Category": 'E', "ID": 4, "Value": 33.87}
df = spark.createDataFrame(data)
display(df)
''').decode("UTF-8")
Typescript
const notebook = new Notebook(this, "notebook", {
path: currentUser.home + "/CDKTF/" + vars.resourcePrefix + "-notebook.py",
language: "PYTHON",
contentBase64: Buffer.from(`
data = [
{ "Category": 'A', "ID": 1, "Value": 121.44 },
{ "Category": 'B', "ID": 2, "Value": 300.01 },
{ "Category": 'C', "ID": 3, "Value": 10.99 },
{ "Category": 'E', "ID": 4, "Value": 33.87}
df = spark.createDataFrame(data)
display(df)`, "utf8").toString("base64")
确保以倒引号 (`) 开始和结束的代码行与代码编辑器的边缘齐平。 否则,Terraform 将会在笔记本中插入空格,这可能会导致新的 Python 代码无法运行。
重新生成 CDKTF 项目的等效 Terraform 代码。 为此,请运行以下内容:
cdktf synth
在进行更改之前,可以查看挂起的资源更改。 运行以下内容:
cdktf diff
通过运行 cdktf deploy
命令部署笔记本更改。
cdktf deploy
当提示批准时,按 Enter。 Terraform 将更改笔记本的内容。
若要查看作业将在工作区中运行的已更改笔记本,请刷新先前打开的笔记本,或复制 cdk deploy
命令输出中显示的“笔记本 URL”链接,并将其粘贴到 Web 浏览器的地址栏中。
若要查看在工作区中运行已更改笔记本的作业,请刷新先前打开的作业,或复制 cdk deploy
命令输出中显示的“作业 URL”链接,并将其粘贴到 Web 浏览器的地址栏中。
若要运行作业,请单击作业页上的“立即运行”按钮。
步骤 6:清理
在此步骤中,将使用 CDKTF CLI 从 Azure Databricks 工作区中删除笔记本和作业。
通过运行 cdktf destroy
命令从工作区中删除资源:
cdktf destroy
当提示批准时,按 Enter。 Terraform 将从工作区中删除资源。
适用于 TypeScript、Python、Java、C# 和 Go 的 Terraform CDK Databricks 提供程序构造参考