1. Packages
  2. Databricks Provider
  3. API Docs
  4. Cluster
Databricks v1.63.0 published on Thursday, Mar 13, 2025 by Pulumi

databricks.Cluster

Explore with Pulumi AI

Import

The resource cluster can be imported using cluster id.

bash

$ pulumi import databricks:index/cluster:Cluster this <cluster-id>
Copy

Create Cluster Resource

Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.

Constructor syntax

new Cluster(name: string, args: ClusterArgs, opts?: CustomResourceOptions);
@overload
def Cluster(resource_name: str,
            args: ClusterArgs,
            opts: Optional[ResourceOptions] = None)

@overload
def Cluster(resource_name: str,
            opts: Optional[ResourceOptions] = None,
            spark_version: Optional[str] = None,
            idempotency_token: Optional[str] = None,
            custom_tags: Optional[Mapping[str, str]] = None,
            aws_attributes: Optional[ClusterAwsAttributesArgs] = None,
            azure_attributes: Optional[ClusterAzureAttributesArgs] = None,
            init_scripts: Optional[Sequence[ClusterInitScriptArgs]] = None,
            cluster_mount_infos: Optional[Sequence[ClusterClusterMountInfoArgs]] = None,
            cluster_name: Optional[str] = None,
            instance_pool_id: Optional[str] = None,
            data_security_mode: Optional[str] = None,
            is_pinned: Optional[bool] = None,
            driver_instance_pool_id: Optional[str] = None,
            driver_node_type_id: Optional[str] = None,
            enable_elastic_disk: Optional[bool] = None,
            enable_local_disk_encryption: Optional[bool] = None,
            gcp_attributes: Optional[ClusterGcpAttributesArgs] = None,
            apply_policy_default_values: Optional[bool] = None,
            cluster_log_conf: Optional[ClusterClusterLogConfArgs] = None,
            autotermination_minutes: Optional[int] = None,
            docker_image: Optional[ClusterDockerImageArgs] = None,
            is_single_node: Optional[bool] = None,
            kind: Optional[str] = None,
            libraries: Optional[Sequence[ClusterLibraryArgs]] = None,
            no_wait: Optional[bool] = None,
            node_type_id: Optional[str] = None,
            num_workers: Optional[int] = None,
            policy_id: Optional[str] = None,
            runtime_engine: Optional[str] = None,
            single_user_name: Optional[str] = None,
            spark_conf: Optional[Mapping[str, str]] = None,
            spark_env_vars: Optional[Mapping[str, str]] = None,
            autoscale: Optional[ClusterAutoscaleArgs] = None,
            ssh_public_keys: Optional[Sequence[str]] = None,
            use_ml_runtime: Optional[bool] = None,
            workload_type: Optional[ClusterWorkloadTypeArgs] = None)
func NewCluster(ctx *Context, name string, args ClusterArgs, opts ...ResourceOption) (*Cluster, error)
public Cluster(string name, ClusterArgs args, CustomResourceOptions? opts = null)
public Cluster(String name, ClusterArgs args)
public Cluster(String name, ClusterArgs args, CustomResourceOptions options)
type: databricks:Cluster
properties: # The arguments to resource properties.
options: # Bag of options to control resource's behavior.

Parameters

name This property is required. string
The unique name of the resource.
args This property is required. ClusterArgs
The arguments to resource properties.
opts CustomResourceOptions
Bag of options to control resource's behavior.
resource_name This property is required. str
The unique name of the resource.
args This property is required. ClusterArgs
The arguments to resource properties.
opts ResourceOptions
Bag of options to control resource's behavior.
ctx Context
Context object for the current deployment.
name This property is required. string
The unique name of the resource.
args This property is required. ClusterArgs
The arguments to resource properties.
opts ResourceOption
Bag of options to control resource's behavior.
name This property is required. string
The unique name of the resource.
args This property is required. ClusterArgs
The arguments to resource properties.
opts CustomResourceOptions
Bag of options to control resource's behavior.
name This property is required. String
The unique name of the resource.
args This property is required. ClusterArgs
The arguments to resource properties.
options CustomResourceOptions
Bag of options to control resource's behavior.

Constructor example

The following reference example uses placeholder values for all input properties.

var clusterResource = new Databricks.Cluster("clusterResource", new()
{
    SparkVersion = "string",
    IdempotencyToken = "string",
    CustomTags = 
    {
        { "string", "string" },
    },
    AwsAttributes = new Databricks.Inputs.ClusterAwsAttributesArgs
    {
        Availability = "string",
        EbsVolumeCount = 0,
        EbsVolumeIops = 0,
        EbsVolumeSize = 0,
        EbsVolumeThroughput = 0,
        EbsVolumeType = "string",
        FirstOnDemand = 0,
        InstanceProfileArn = "string",
        SpotBidPricePercent = 0,
        ZoneId = "string",
    },
    AzureAttributes = new Databricks.Inputs.ClusterAzureAttributesArgs
    {
        Availability = "string",
        FirstOnDemand = 0,
        LogAnalyticsInfo = new Databricks.Inputs.ClusterAzureAttributesLogAnalyticsInfoArgs
        {
            LogAnalyticsPrimaryKey = "string",
            LogAnalyticsWorkspaceId = "string",
        },
        SpotBidMaxPrice = 0,
    },
    InitScripts = new[]
    {
        new Databricks.Inputs.ClusterInitScriptArgs
        {
            Abfss = new Databricks.Inputs.ClusterInitScriptAbfssArgs
            {
                Destination = "string",
            },
            File = new Databricks.Inputs.ClusterInitScriptFileArgs
            {
                Destination = "string",
            },
            Gcs = new Databricks.Inputs.ClusterInitScriptGcsArgs
            {
                Destination = "string",
            },
            S3 = new Databricks.Inputs.ClusterInitScriptS3Args
            {
                Destination = "string",
                CannedAcl = "string",
                EnableEncryption = false,
                EncryptionType = "string",
                Endpoint = "string",
                KmsKey = "string",
                Region = "string",
            },
            Volumes = new Databricks.Inputs.ClusterInitScriptVolumesArgs
            {
                Destination = "string",
            },
            Workspace = new Databricks.Inputs.ClusterInitScriptWorkspaceArgs
            {
                Destination = "string",
            },
        },
    },
    ClusterMountInfos = new[]
    {
        new Databricks.Inputs.ClusterClusterMountInfoArgs
        {
            LocalMountDirPath = "string",
            NetworkFilesystemInfo = new Databricks.Inputs.ClusterClusterMountInfoNetworkFilesystemInfoArgs
            {
                ServerAddress = "string",
                MountOptions = "string",
            },
            RemoteMountDirPath = "string",
        },
    },
    ClusterName = "string",
    InstancePoolId = "string",
    DataSecurityMode = "string",
    IsPinned = false,
    DriverInstancePoolId = "string",
    DriverNodeTypeId = "string",
    EnableElasticDisk = false,
    EnableLocalDiskEncryption = false,
    GcpAttributes = new Databricks.Inputs.ClusterGcpAttributesArgs
    {
        Availability = "string",
        BootDiskSize = 0,
        GoogleServiceAccount = "string",
        LocalSsdCount = 0,
        UsePreemptibleExecutors = false,
        ZoneId = "string",
    },
    ApplyPolicyDefaultValues = false,
    ClusterLogConf = new Databricks.Inputs.ClusterClusterLogConfArgs
    {
        Dbfs = new Databricks.Inputs.ClusterClusterLogConfDbfsArgs
        {
            Destination = "string",
        },
        S3 = new Databricks.Inputs.ClusterClusterLogConfS3Args
        {
            Destination = "string",
            CannedAcl = "string",
            EnableEncryption = false,
            EncryptionType = "string",
            Endpoint = "string",
            KmsKey = "string",
            Region = "string",
        },
        Volumes = new Databricks.Inputs.ClusterClusterLogConfVolumesArgs
        {
            Destination = "string",
        },
    },
    AutoterminationMinutes = 0,
    DockerImage = new Databricks.Inputs.ClusterDockerImageArgs
    {
        Url = "string",
        BasicAuth = new Databricks.Inputs.ClusterDockerImageBasicAuthArgs
        {
            Password = "string",
            Username = "string",
        },
    },
    IsSingleNode = false,
    Kind = "string",
    Libraries = new[]
    {
        new Databricks.Inputs.ClusterLibraryArgs
        {
            Cran = new Databricks.Inputs.ClusterLibraryCranArgs
            {
                Package = "string",
                Repo = "string",
            },
            Egg = "string",
            Jar = "string",
            Maven = new Databricks.Inputs.ClusterLibraryMavenArgs
            {
                Coordinates = "string",
                Exclusions = new[]
                {
                    "string",
                },
                Repo = "string",
            },
            Pypi = new Databricks.Inputs.ClusterLibraryPypiArgs
            {
                Package = "string",
                Repo = "string",
            },
            Requirements = "string",
            Whl = "string",
        },
    },
    NoWait = false,
    NodeTypeId = "string",
    NumWorkers = 0,
    PolicyId = "string",
    RuntimeEngine = "string",
    SingleUserName = "string",
    SparkConf = 
    {
        { "string", "string" },
    },
    SparkEnvVars = 
    {
        { "string", "string" },
    },
    Autoscale = new Databricks.Inputs.ClusterAutoscaleArgs
    {
        MaxWorkers = 0,
        MinWorkers = 0,
    },
    SshPublicKeys = new[]
    {
        "string",
    },
    UseMlRuntime = false,
    WorkloadType = new Databricks.Inputs.ClusterWorkloadTypeArgs
    {
        Clients = new Databricks.Inputs.ClusterWorkloadTypeClientsArgs
        {
            Jobs = false,
            Notebooks = false,
        },
    },
});
Copy
example, err := databricks.NewCluster(ctx, "clusterResource", &databricks.ClusterArgs{
	SparkVersion:     pulumi.String("string"),
	IdempotencyToken: pulumi.String("string"),
	CustomTags: pulumi.StringMap{
		"string": pulumi.String("string"),
	},
	AwsAttributes: &databricks.ClusterAwsAttributesArgs{
		Availability:        pulumi.String("string"),
		EbsVolumeCount:      pulumi.Int(0),
		EbsVolumeIops:       pulumi.Int(0),
		EbsVolumeSize:       pulumi.Int(0),
		EbsVolumeThroughput: pulumi.Int(0),
		EbsVolumeType:       pulumi.String("string"),
		FirstOnDemand:       pulumi.Int(0),
		InstanceProfileArn:  pulumi.String("string"),
		SpotBidPricePercent: pulumi.Int(0),
		ZoneId:              pulumi.String("string"),
	},
	AzureAttributes: &databricks.ClusterAzureAttributesArgs{
		Availability:  pulumi.String("string"),
		FirstOnDemand: pulumi.Int(0),
		LogAnalyticsInfo: &databricks.ClusterAzureAttributesLogAnalyticsInfoArgs{
			LogAnalyticsPrimaryKey:  pulumi.String("string"),
			LogAnalyticsWorkspaceId: pulumi.String("string"),
		},
		SpotBidMaxPrice: pulumi.Float64(0),
	},
	InitScripts: databricks.ClusterInitScriptArray{
		&databricks.ClusterInitScriptArgs{
			Abfss: &databricks.ClusterInitScriptAbfssArgs{
				Destination: pulumi.String("string"),
			},
			File: &databricks.ClusterInitScriptFileArgs{
				Destination: pulumi.String("string"),
			},
			Gcs: &databricks.ClusterInitScriptGcsArgs{
				Destination: pulumi.String("string"),
			},
			S3: &databricks.ClusterInitScriptS3Args{
				Destination:      pulumi.String("string"),
				CannedAcl:        pulumi.String("string"),
				EnableEncryption: pulumi.Bool(false),
				EncryptionType:   pulumi.String("string"),
				Endpoint:         pulumi.String("string"),
				KmsKey:           pulumi.String("string"),
				Region:           pulumi.String("string"),
			},
			Volumes: &databricks.ClusterInitScriptVolumesArgs{
				Destination: pulumi.String("string"),
			},
			Workspace: &databricks.ClusterInitScriptWorkspaceArgs{
				Destination: pulumi.String("string"),
			},
		},
	},
	ClusterMountInfos: databricks.ClusterClusterMountInfoArray{
		&databricks.ClusterClusterMountInfoArgs{
			LocalMountDirPath: pulumi.String("string"),
			NetworkFilesystemInfo: &databricks.ClusterClusterMountInfoNetworkFilesystemInfoArgs{
				ServerAddress: pulumi.String("string"),
				MountOptions:  pulumi.String("string"),
			},
			RemoteMountDirPath: pulumi.String("string"),
		},
	},
	ClusterName:               pulumi.String("string"),
	InstancePoolId:            pulumi.String("string"),
	DataSecurityMode:          pulumi.String("string"),
	IsPinned:                  pulumi.Bool(false),
	DriverInstancePoolId:      pulumi.String("string"),
	DriverNodeTypeId:          pulumi.String("string"),
	EnableElasticDisk:         pulumi.Bool(false),
	EnableLocalDiskEncryption: pulumi.Bool(false),
	GcpAttributes: &databricks.ClusterGcpAttributesArgs{
		Availability:            pulumi.String("string"),
		BootDiskSize:            pulumi.Int(0),
		GoogleServiceAccount:    pulumi.String("string"),
		LocalSsdCount:           pulumi.Int(0),
		UsePreemptibleExecutors: pulumi.Bool(false),
		ZoneId:                  pulumi.String("string"),
	},
	ApplyPolicyDefaultValues: pulumi.Bool(false),
	ClusterLogConf: &databricks.ClusterClusterLogConfArgs{
		Dbfs: &databricks.ClusterClusterLogConfDbfsArgs{
			Destination: pulumi.String("string"),
		},
		S3: &databricks.ClusterClusterLogConfS3Args{
			Destination:      pulumi.String("string"),
			CannedAcl:        pulumi.String("string"),
			EnableEncryption: pulumi.Bool(false),
			EncryptionType:   pulumi.String("string"),
			Endpoint:         pulumi.String("string"),
			KmsKey:           pulumi.String("string"),
			Region:           pulumi.String("string"),
		},
		Volumes: &databricks.ClusterClusterLogConfVolumesArgs{
			Destination: pulumi.String("string"),
		},
	},
	AutoterminationMinutes: pulumi.Int(0),
	DockerImage: &databricks.ClusterDockerImageArgs{
		Url: pulumi.String("string"),
		BasicAuth: &databricks.ClusterDockerImageBasicAuthArgs{
			Password: pulumi.String("string"),
			Username: pulumi.String("string"),
		},
	},
	IsSingleNode: pulumi.Bool(false),
	Kind:         pulumi.String("string"),
	Libraries: databricks.ClusterLibraryArray{
		&databricks.ClusterLibraryArgs{
			Cran: &databricks.ClusterLibraryCranArgs{
				Package: pulumi.String("string"),
				Repo:    pulumi.String("string"),
			},
			Egg: pulumi.String("string"),
			Jar: pulumi.String("string"),
			Maven: &databricks.ClusterLibraryMavenArgs{
				Coordinates: pulumi.String("string"),
				Exclusions: pulumi.StringArray{
					pulumi.String("string"),
				},
				Repo: pulumi.String("string"),
			},
			Pypi: &databricks.ClusterLibraryPypiArgs{
				Package: pulumi.String("string"),
				Repo:    pulumi.String("string"),
			},
			Requirements: pulumi.String("string"),
			Whl:          pulumi.String("string"),
		},
	},
	NoWait:         pulumi.Bool(false),
	NodeTypeId:     pulumi.String("string"),
	NumWorkers:     pulumi.Int(0),
	PolicyId:       pulumi.String("string"),
	RuntimeEngine:  pulumi.String("string"),
	SingleUserName: pulumi.String("string"),
	SparkConf: pulumi.StringMap{
		"string": pulumi.String("string"),
	},
	SparkEnvVars: pulumi.StringMap{
		"string": pulumi.String("string"),
	},
	Autoscale: &databricks.ClusterAutoscaleArgs{
		MaxWorkers: pulumi.Int(0),
		MinWorkers: pulumi.Int(0),
	},
	SshPublicKeys: pulumi.StringArray{
		pulumi.String("string"),
	},
	UseMlRuntime: pulumi.Bool(false),
	WorkloadType: &databricks.ClusterWorkloadTypeArgs{
		Clients: &databricks.ClusterWorkloadTypeClientsArgs{
			Jobs:      pulumi.Bool(false),
			Notebooks: pulumi.Bool(false),
		},
	},
})
Copy
var clusterResource = new Cluster("clusterResource", ClusterArgs.builder()
    .sparkVersion("string")
    .idempotencyToken("string")
    .customTags(Map.of("string", "string"))
    .awsAttributes(ClusterAwsAttributesArgs.builder()
        .availability("string")
        .ebsVolumeCount(0)
        .ebsVolumeIops(0)
        .ebsVolumeSize(0)
        .ebsVolumeThroughput(0)
        .ebsVolumeType("string")
        .firstOnDemand(0)
        .instanceProfileArn("string")
        .spotBidPricePercent(0)
        .zoneId("string")
        .build())
    .azureAttributes(ClusterAzureAttributesArgs.builder()
        .availability("string")
        .firstOnDemand(0)
        .logAnalyticsInfo(ClusterAzureAttributesLogAnalyticsInfoArgs.builder()
            .logAnalyticsPrimaryKey("string")
            .logAnalyticsWorkspaceId("string")
            .build())
        .spotBidMaxPrice(0)
        .build())
    .initScripts(ClusterInitScriptArgs.builder()
        .abfss(ClusterInitScriptAbfssArgs.builder()
            .destination("string")
            .build())
        .file(ClusterInitScriptFileArgs.builder()
            .destination("string")
            .build())
        .gcs(ClusterInitScriptGcsArgs.builder()
            .destination("string")
            .build())
        .s3(ClusterInitScriptS3Args.builder()
            .destination("string")
            .cannedAcl("string")
            .enableEncryption(false)
            .encryptionType("string")
            .endpoint("string")
            .kmsKey("string")
            .region("string")
            .build())
        .volumes(ClusterInitScriptVolumesArgs.builder()
            .destination("string")
            .build())
        .workspace(ClusterInitScriptWorkspaceArgs.builder()
            .destination("string")
            .build())
        .build())
    .clusterMountInfos(ClusterClusterMountInfoArgs.builder()
        .localMountDirPath("string")
        .networkFilesystemInfo(ClusterClusterMountInfoNetworkFilesystemInfoArgs.builder()
            .serverAddress("string")
            .mountOptions("string")
            .build())
        .remoteMountDirPath("string")
        .build())
    .clusterName("string")
    .instancePoolId("string")
    .dataSecurityMode("string")
    .isPinned(false)
    .driverInstancePoolId("string")
    .driverNodeTypeId("string")
    .enableElasticDisk(false)
    .enableLocalDiskEncryption(false)
    .gcpAttributes(ClusterGcpAttributesArgs.builder()
        .availability("string")
        .bootDiskSize(0)
        .googleServiceAccount("string")
        .localSsdCount(0)
        .usePreemptibleExecutors(false)
        .zoneId("string")
        .build())
    .applyPolicyDefaultValues(false)
    .clusterLogConf(ClusterClusterLogConfArgs.builder()
        .dbfs(ClusterClusterLogConfDbfsArgs.builder()
            .destination("string")
            .build())
        .s3(ClusterClusterLogConfS3Args.builder()
            .destination("string")
            .cannedAcl("string")
            .enableEncryption(false)
            .encryptionType("string")
            .endpoint("string")
            .kmsKey("string")
            .region("string")
            .build())
        .volumes(ClusterClusterLogConfVolumesArgs.builder()
            .destination("string")
            .build())
        .build())
    .autoterminationMinutes(0)
    .dockerImage(ClusterDockerImageArgs.builder()
        .url("string")
        .basicAuth(ClusterDockerImageBasicAuthArgs.builder()
            .password("string")
            .username("string")
            .build())
        .build())
    .isSingleNode(false)
    .kind("string")
    .libraries(ClusterLibraryArgs.builder()
        .cran(ClusterLibraryCranArgs.builder()
            .package_("string")
            .repo("string")
            .build())
        .egg("string")
        .jar("string")
        .maven(ClusterLibraryMavenArgs.builder()
            .coordinates("string")
            .exclusions("string")
            .repo("string")
            .build())
        .pypi(ClusterLibraryPypiArgs.builder()
            .package_("string")
            .repo("string")
            .build())
        .requirements("string")
        .whl("string")
        .build())
    .noWait(false)
    .nodeTypeId("string")
    .numWorkers(0)
    .policyId("string")
    .runtimeEngine("string")
    .singleUserName("string")
    .sparkConf(Map.of("string", "string"))
    .sparkEnvVars(Map.of("string", "string"))
    .autoscale(ClusterAutoscaleArgs.builder()
        .maxWorkers(0)
        .minWorkers(0)
        .build())
    .sshPublicKeys("string")
    .useMlRuntime(false)
    .workloadType(ClusterWorkloadTypeArgs.builder()
        .clients(ClusterWorkloadTypeClientsArgs.builder()
            .jobs(false)
            .notebooks(false)
            .build())
        .build())
    .build());
Copy
cluster_resource = databricks.Cluster("clusterResource",
    spark_version="string",
    idempotency_token="string",
    custom_tags={
        "string": "string",
    },
    aws_attributes={
        "availability": "string",
        "ebs_volume_count": 0,
        "ebs_volume_iops": 0,
        "ebs_volume_size": 0,
        "ebs_volume_throughput": 0,
        "ebs_volume_type": "string",
        "first_on_demand": 0,
        "instance_profile_arn": "string",
        "spot_bid_price_percent": 0,
        "zone_id": "string",
    },
    azure_attributes={
        "availability": "string",
        "first_on_demand": 0,
        "log_analytics_info": {
            "log_analytics_primary_key": "string",
            "log_analytics_workspace_id": "string",
        },
        "spot_bid_max_price": 0,
    },
    init_scripts=[{
        "abfss": {
            "destination": "string",
        },
        "file": {
            "destination": "string",
        },
        "gcs": {
            "destination": "string",
        },
        "s3": {
            "destination": "string",
            "canned_acl": "string",
            "enable_encryption": False,
            "encryption_type": "string",
            "endpoint": "string",
            "kms_key": "string",
            "region": "string",
        },
        "volumes": {
            "destination": "string",
        },
        "workspace": {
            "destination": "string",
        },
    }],
    cluster_mount_infos=[{
        "local_mount_dir_path": "string",
        "network_filesystem_info": {
            "server_address": "string",
            "mount_options": "string",
        },
        "remote_mount_dir_path": "string",
    }],
    cluster_name="string",
    instance_pool_id="string",
    data_security_mode="string",
    is_pinned=False,
    driver_instance_pool_id="string",
    driver_node_type_id="string",
    enable_elastic_disk=False,
    enable_local_disk_encryption=False,
    gcp_attributes={
        "availability": "string",
        "boot_disk_size": 0,
        "google_service_account": "string",
        "local_ssd_count": 0,
        "use_preemptible_executors": False,
        "zone_id": "string",
    },
    apply_policy_default_values=False,
    cluster_log_conf={
        "dbfs": {
            "destination": "string",
        },
        "s3": {
            "destination": "string",
            "canned_acl": "string",
            "enable_encryption": False,
            "encryption_type": "string",
            "endpoint": "string",
            "kms_key": "string",
            "region": "string",
        },
        "volumes": {
            "destination": "string",
        },
    },
    autotermination_minutes=0,
    docker_image={
        "url": "string",
        "basic_auth": {
            "password": "string",
            "username": "string",
        },
    },
    is_single_node=False,
    kind="string",
    libraries=[{
        "cran": {
            "package": "string",
            "repo": "string",
        },
        "egg": "string",
        "jar": "string",
        "maven": {
            "coordinates": "string",
            "exclusions": ["string"],
            "repo": "string",
        },
        "pypi": {
            "package": "string",
            "repo": "string",
        },
        "requirements": "string",
        "whl": "string",
    }],
    no_wait=False,
    node_type_id="string",
    num_workers=0,
    policy_id="string",
    runtime_engine="string",
    single_user_name="string",
    spark_conf={
        "string": "string",
    },
    spark_env_vars={
        "string": "string",
    },
    autoscale={
        "max_workers": 0,
        "min_workers": 0,
    },
    ssh_public_keys=["string"],
    use_ml_runtime=False,
    workload_type={
        "clients": {
            "jobs": False,
            "notebooks": False,
        },
    })
Copy
const clusterResource = new databricks.Cluster("clusterResource", {
    sparkVersion: "string",
    idempotencyToken: "string",
    customTags: {
        string: "string",
    },
    awsAttributes: {
        availability: "string",
        ebsVolumeCount: 0,
        ebsVolumeIops: 0,
        ebsVolumeSize: 0,
        ebsVolumeThroughput: 0,
        ebsVolumeType: "string",
        firstOnDemand: 0,
        instanceProfileArn: "string",
        spotBidPricePercent: 0,
        zoneId: "string",
    },
    azureAttributes: {
        availability: "string",
        firstOnDemand: 0,
        logAnalyticsInfo: {
            logAnalyticsPrimaryKey: "string",
            logAnalyticsWorkspaceId: "string",
        },
        spotBidMaxPrice: 0,
    },
    initScripts: [{
        abfss: {
            destination: "string",
        },
        file: {
            destination: "string",
        },
        gcs: {
            destination: "string",
        },
        s3: {
            destination: "string",
            cannedAcl: "string",
            enableEncryption: false,
            encryptionType: "string",
            endpoint: "string",
            kmsKey: "string",
            region: "string",
        },
        volumes: {
            destination: "string",
        },
        workspace: {
            destination: "string",
        },
    }],
    clusterMountInfos: [{
        localMountDirPath: "string",
        networkFilesystemInfo: {
            serverAddress: "string",
            mountOptions: "string",
        },
        remoteMountDirPath: "string",
    }],
    clusterName: "string",
    instancePoolId: "string",
    dataSecurityMode: "string",
    isPinned: false,
    driverInstancePoolId: "string",
    driverNodeTypeId: "string",
    enableElasticDisk: false,
    enableLocalDiskEncryption: false,
    gcpAttributes: {
        availability: "string",
        bootDiskSize: 0,
        googleServiceAccount: "string",
        localSsdCount: 0,
        usePreemptibleExecutors: false,
        zoneId: "string",
    },
    applyPolicyDefaultValues: false,
    clusterLogConf: {
        dbfs: {
            destination: "string",
        },
        s3: {
            destination: "string",
            cannedAcl: "string",
            enableEncryption: false,
            encryptionType: "string",
            endpoint: "string",
            kmsKey: "string",
            region: "string",
        },
        volumes: {
            destination: "string",
        },
    },
    autoterminationMinutes: 0,
    dockerImage: {
        url: "string",
        basicAuth: {
            password: "string",
            username: "string",
        },
    },
    isSingleNode: false,
    kind: "string",
    libraries: [{
        cran: {
            "package": "string",
            repo: "string",
        },
        egg: "string",
        jar: "string",
        maven: {
            coordinates: "string",
            exclusions: ["string"],
            repo: "string",
        },
        pypi: {
            "package": "string",
            repo: "string",
        },
        requirements: "string",
        whl: "string",
    }],
    noWait: false,
    nodeTypeId: "string",
    numWorkers: 0,
    policyId: "string",
    runtimeEngine: "string",
    singleUserName: "string",
    sparkConf: {
        string: "string",
    },
    sparkEnvVars: {
        string: "string",
    },
    autoscale: {
        maxWorkers: 0,
        minWorkers: 0,
    },
    sshPublicKeys: ["string"],
    useMlRuntime: false,
    workloadType: {
        clients: {
            jobs: false,
            notebooks: false,
        },
    },
});
Copy
type: databricks:Cluster
properties:
    applyPolicyDefaultValues: false
    autoscale:
        maxWorkers: 0
        minWorkers: 0
    autoterminationMinutes: 0
    awsAttributes:
        availability: string
        ebsVolumeCount: 0
        ebsVolumeIops: 0
        ebsVolumeSize: 0
        ebsVolumeThroughput: 0
        ebsVolumeType: string
        firstOnDemand: 0
        instanceProfileArn: string
        spotBidPricePercent: 0
        zoneId: string
    azureAttributes:
        availability: string
        firstOnDemand: 0
        logAnalyticsInfo:
            logAnalyticsPrimaryKey: string
            logAnalyticsWorkspaceId: string
        spotBidMaxPrice: 0
    clusterLogConf:
        dbfs:
            destination: string
        s3:
            cannedAcl: string
            destination: string
            enableEncryption: false
            encryptionType: string
            endpoint: string
            kmsKey: string
            region: string
        volumes:
            destination: string
    clusterMountInfos:
        - localMountDirPath: string
          networkFilesystemInfo:
            mountOptions: string
            serverAddress: string
          remoteMountDirPath: string
    clusterName: string
    customTags:
        string: string
    dataSecurityMode: string
    dockerImage:
        basicAuth:
            password: string
            username: string
        url: string
    driverInstancePoolId: string
    driverNodeTypeId: string
    enableElasticDisk: false
    enableLocalDiskEncryption: false
    gcpAttributes:
        availability: string
        bootDiskSize: 0
        googleServiceAccount: string
        localSsdCount: 0
        usePreemptibleExecutors: false
        zoneId: string
    idempotencyToken: string
    initScripts:
        - abfss:
            destination: string
          file:
            destination: string
          gcs:
            destination: string
          s3:
            cannedAcl: string
            destination: string
            enableEncryption: false
            encryptionType: string
            endpoint: string
            kmsKey: string
            region: string
          volumes:
            destination: string
          workspace:
            destination: string
    instancePoolId: string
    isPinned: false
    isSingleNode: false
    kind: string
    libraries:
        - cran:
            package: string
            repo: string
          egg: string
          jar: string
          maven:
            coordinates: string
            exclusions:
                - string
            repo: string
          pypi:
            package: string
            repo: string
          requirements: string
          whl: string
    noWait: false
    nodeTypeId: string
    numWorkers: 0
    policyId: string
    runtimeEngine: string
    singleUserName: string
    sparkConf:
        string: string
    sparkEnvVars:
        string: string
    sparkVersion: string
    sshPublicKeys:
        - string
    useMlRuntime: false
    workloadType:
        clients:
            jobs: false
            notebooks: false
Copy

Cluster Resource Properties

To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

Inputs

In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.

The Cluster resource accepts the following input properties:

SparkVersion This property is required. string
Runtime version of the cluster. Any supported databricks.getSparkVersion id. We advise using Cluster Policies to restrict the list of versions for simplicity while maintaining enough control.
ApplyPolicyDefaultValues bool
Whether to use policy default values for missing cluster attributes.
Autoscale ClusterAutoscale
AutoterminationMinutes int
Automatically terminate the cluster after being inactive for this time in minutes. If specified, the threshold must be between 10 and 10000 minutes. You can also set this value to 0 to explicitly disable automatic termination. Defaults to 60. We highly recommend having this setting present for Interactive/BI clusters.
AwsAttributes ClusterAwsAttributes
AzureAttributes ClusterAzureAttributes
ClusterLogConf ClusterClusterLogConf
ClusterMountInfos List<ClusterClusterMountInfo>
ClusterName string
Cluster name, which doesn’t have to be unique. If not specified at creation, the cluster name will be an empty string.
CustomTags Dictionary<string, string>

should have tag ResourceClass set to value Serverless

For example:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const clusterWithTableAccessControl = new databricks.Cluster("cluster_with_table_access_control", { clusterName: "Shared High-Concurrency", sparkVersion: latestLts.id, nodeTypeId: smallest.id, autoterminationMinutes: 20, sparkConf: { "spark.databricks.repl.allowedLanguages": "python,sql", "spark.databricks.cluster.profile": "serverless", }, customTags: { ResourceClass: "Serverless", }, });

import pulumi
import pulumi_databricks as databricks

cluster_with_table_access_control = databricks.Cluster("cluster_with_table_access_control",
    cluster_name="Shared High-Concurrency",
    spark_version=latest_lts["id"],
    node_type_id=smallest["id"],
    autotermination_minutes=20,
    spark_conf={
        "spark.databricks.repl.allowedLanguages": "python,sql",
        "spark.databricks.cluster.profile": "serverless",
    },
    custom_tags={
        "ResourceClass": "Serverless",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var clusterWithTableAccessControl = new Databricks.Cluster("cluster_with_table_access_control", new()
    {
        ClusterName = "Shared High-Concurrency",
        SparkVersion = latestLts.Id,
        NodeTypeId = smallest.Id,
        AutoterminationMinutes = 20,
        SparkConf = 
        {
            { "spark.databricks.repl.allowedLanguages", "python,sql" },
            { "spark.databricks.cluster.profile", "serverless" },
        },
        CustomTags = 
        {
            { "ResourceClass", "Serverless" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := databricks.NewCluster(ctx, "cluster_with_table_access_control", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Shared High-Concurrency"),
			SparkVersion:           pulumi.Any(latestLts.Id),
			NodeTypeId:             pulumi.Any(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			SparkConf: pulumi.StringMap{
				"spark.databricks.repl.allowedLanguages": pulumi.String("python,sql"),
				"spark.databricks.cluster.profile":       pulumi.String("serverless"),
			},
			CustomTags: pulumi.StringMap{
				"ResourceClass": pulumi.String("Serverless"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var clusterWithTableAccessControl = new Cluster("clusterWithTableAccessControl", ClusterArgs.builder()
            .clusterName("Shared High-Concurrency")
            .sparkVersion(latestLts.id())
            .nodeTypeId(smallest.id())
            .autoterminationMinutes(20)
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.repl.allowedLanguages", "python,sql"),
                Map.entry("spark.databricks.cluster.profile", "serverless")
            ))
            .customTags(Map.of("ResourceClass", "Serverless"))
            .build());

    }
}
resources:
  clusterWithTableAccessControl:
    type: databricks:Cluster
    name: cluster_with_table_access_control
    properties:
      clusterName: Shared High-Concurrency
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      sparkConf:
        spark.databricks.repl.allowedLanguages: python,sql
        spark.databricks.cluster.profile: serverless
      customTags:
        ResourceClass: Serverless
DataSecurityMode string
Select the security features of the cluster (see API docs for full list of values). Unity Catalog requires SINGLE_USER or USER_ISOLATION mode. LEGACY_PASSTHROUGH for passthrough cluster and LEGACY_TABLE_ACL for Table ACL cluster. If omitted, default security features are enabled. To disable security features use NONE or legacy mode NO_ISOLATION. If kind is specified, then the following options are available:

  • DATA_SECURITY_MODE_AUTO: Databricks will choose the most appropriate access mode depending on your compute configuration.
  • DATA_SECURITY_MODE_STANDARD: Alias for USER_ISOLATION.
  • DATA_SECURITY_MODE_DEDICATED: Alias for SINGLE_USER.
DockerImage ClusterDockerImage
DriverInstancePoolId string
similar to instance_pool_id, but for driver node. If omitted, and instance_pool_id is specified, then the driver will be allocated from that pool.
DriverNodeTypeId string
The node type of the Spark driver. This field is optional; if unset, API will set the driver node type to the same value as node_type_id defined above.
EnableElasticDisk bool
If you don’t want to allocate a fixed number of EBS volumes at cluster creation time, use autoscaling local storage. With autoscaling local storage, Databricks monitors the amount of free disk space available on your cluster’s Spark workers. If a worker begins to run too low on disk, Databricks automatically attaches a new EBS volume to the worker before it runs out of disk space. EBS volumes are attached up to a limit of 5 TB of total disk space per instance (including the instance’s local storage). To scale down EBS usage, make sure you have autotermination_minutes and autoscale attributes set. More documentation available at cluster configuration page.
EnableLocalDiskEncryption bool
Some instance types you use to run clusters may have locally attached disks. Databricks may store shuffle data or temporary data on these locally attached disks. To ensure that all data at rest is encrypted for all storage types, including shuffle data stored temporarily on your cluster’s local disks, you can enable local disk encryption. When local disk encryption is enabled, Databricks generates an encryption key locally unique to each cluster node and uses it to encrypt all data stored on local disks. The scope of the key is local to each cluster node and is destroyed along with the cluster node itself. During its lifetime, the key resides in memory for encryption and decryption and is stored encrypted on the disk. Your workloads may run more slowly because of the performance impact of reading and writing encrypted data to and from local volumes. This feature is not available for all Azure Databricks subscriptions. Contact your Microsoft or Databricks account representative to request access.
GcpAttributes ClusterGcpAttributes
IdempotencyToken Changes to this property will trigger replacement. string
An optional token to guarantee the idempotency of cluster creation requests. If an active cluster with the provided token already exists, the request will not create a new cluster, but it will return the existing running cluster's ID instead. If you specify the idempotency token, upon failure, you can retry until the request succeeds. Databricks platform guarantees to launch exactly one cluster with that idempotency token. This token should have at most 64 characters.
InitScripts List<ClusterInitScript>
InstancePoolId string
To reduce cluster start time, you can attach a cluster to a predefined pool of idle instances. When attached to a pool, a cluster allocates its driver and worker nodes from the pool. If the pool does not have sufficient idle resources to accommodate the cluster’s request, it expands by allocating new instances from the instance provider. When an attached cluster changes its state to TERMINATED, the instances it used are returned to the pool and reused by a different cluster.
IsPinned bool
boolean value specifying if the cluster is pinned (not pinned by default). You must be a Databricks administrator to use this. The pinned clusters' maximum number is limited to 100, so apply may fail if you have more than that (this number may change over time, so check Databricks documentation for actual number).
IsSingleNode bool
When set to true, Databricks will automatically set single node related custom_tags, spark_conf, and num_workers.
Kind string
The kind of compute described by this compute specification. Possible values (see API docs for full list): CLASSIC_PREVIEW (if corresponding public preview is enabled).
Libraries List<ClusterLibrary>
NoWait bool

If true, the provider will not wait for the cluster to reach RUNNING state when creating the cluster, allowing cluster creation and library installation to continue asynchronously. Defaults to false (the provider will wait for cluster creation and library installation to succeed).

The following example demonstrates how to create an autoscaling cluster with Delta Cache enabled:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const smallest = databricks.getNodeType({ localDisk: true, }); const latestLts = databricks.getSparkVersion({ longTermSupport: true, }); const sharedAutoscaling = new databricks.Cluster("shared_autoscaling", { clusterName: "Shared Autoscaling", sparkVersion: latestLts.then(latestLts => latestLts.id), nodeTypeId: smallest.then(smallest => smallest.id), autoterminationMinutes: 20, autoscale: { minWorkers: 1, maxWorkers: 50, }, sparkConf: { "spark.databricks.io.cache.enabled": "true", "spark.databricks.io.cache.maxDiskUsage": "50g", "spark.databricks.io.cache.maxMetaDataCache": "1g", }, });

import pulumi
import pulumi_databricks as databricks

smallest = databricks.get_node_type(local_disk=True)
latest_lts = databricks.get_spark_version(long_term_support=True)
shared_autoscaling = databricks.Cluster("shared_autoscaling",
    cluster_name="Shared Autoscaling",
    spark_version=latest_lts.id,
    node_type_id=smallest.id,
    autotermination_minutes=20,
    autoscale={
        "min_workers": 1,
        "max_workers": 50,
    },
    spark_conf={
        "spark.databricks.io.cache.enabled": "true",
        "spark.databricks.io.cache.maxDiskUsage": "50g",
        "spark.databricks.io.cache.maxMetaDataCache": "1g",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var smallest = Databricks.GetNodeType.Invoke(new()
    {
        LocalDisk = true,
    });

    var latestLts = Databricks.GetSparkVersion.Invoke(new()
    {
        LongTermSupport = true,
    });

    var sharedAutoscaling = new Databricks.Cluster("shared_autoscaling", new()
    {
        ClusterName = "Shared Autoscaling",
        SparkVersion = latestLts.Apply(getSparkVersionResult => getSparkVersionResult.Id),
        NodeTypeId = smallest.Apply(getNodeTypeResult => getNodeTypeResult.Id),
        AutoterminationMinutes = 20,
        Autoscale = new Databricks.Inputs.ClusterAutoscaleArgs
        {
            MinWorkers = 1,
            MaxWorkers = 50,
        },
        SparkConf = 
        {
            { "spark.databricks.io.cache.enabled", "true" },
            { "spark.databricks.io.cache.maxDiskUsage", "50g" },
            { "spark.databricks.io.cache.maxMetaDataCache", "1g" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		smallest, err := databricks.GetNodeType(ctx, &databricks.GetNodeTypeArgs{
			LocalDisk: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		latestLts, err := databricks.GetSparkVersion(ctx, &databricks.GetSparkVersionArgs{
			LongTermSupport: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		_, err = databricks.NewCluster(ctx, "shared_autoscaling", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Shared Autoscaling"),
			SparkVersion:           pulumi.String(latestLts.Id),
			NodeTypeId:             pulumi.String(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			Autoscale: &databricks.ClusterAutoscaleArgs{
				MinWorkers: pulumi.Int(1),
				MaxWorkers: pulumi.Int(50),
			},
			SparkConf: pulumi.StringMap{
				"spark.databricks.io.cache.enabled":          pulumi.String("true"),
				"spark.databricks.io.cache.maxDiskUsage":     pulumi.String("50g"),
				"spark.databricks.io.cache.maxMetaDataCache": pulumi.String("1g"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.DatabricksFunctions;
import com.pulumi.databricks.inputs.GetNodeTypeArgs;
import com.pulumi.databricks.inputs.GetSparkVersionArgs;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterAutoscaleArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        final var smallest = DatabricksFunctions.getNodeType(GetNodeTypeArgs.builder()
            .localDisk(true)
            .build());

        final var latestLts = DatabricksFunctions.getSparkVersion(GetSparkVersionArgs.builder()
            .longTermSupport(true)
            .build());

        var sharedAutoscaling = new Cluster("sharedAutoscaling", ClusterArgs.builder()
            .clusterName("Shared Autoscaling")
            .sparkVersion(latestLts.applyValue(getSparkVersionResult -> getSparkVersionResult.id()))
            .nodeTypeId(smallest.applyValue(getNodeTypeResult -> getNodeTypeResult.id()))
            .autoterminationMinutes(20)
            .autoscale(ClusterAutoscaleArgs.builder()
                .minWorkers(1)
                .maxWorkers(50)
                .build())
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.io.cache.enabled", true),
                Map.entry("spark.databricks.io.cache.maxDiskUsage", "50g"),
                Map.entry("spark.databricks.io.cache.maxMetaDataCache", "1g")
            ))
            .build());

    }
}
resources:
  sharedAutoscaling:
    type: databricks:Cluster
    name: shared_autoscaling
    properties:
      clusterName: Shared Autoscaling
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      autoscale:
        minWorkers: 1
        maxWorkers: 50
      sparkConf:
        spark.databricks.io.cache.enabled: true
        spark.databricks.io.cache.maxDiskUsage: 50g
        spark.databricks.io.cache.maxMetaDataCache: 1g
variables:
  smallest:
    fn::invoke:
      function: databricks:getNodeType
      arguments:
        localDisk: true
  latestLts:
    fn::invoke:
      function: databricks:getSparkVersion
      arguments:
        longTermSupport: true
NodeTypeId string
Any supported databricks.getNodeType id. If instance_pool_id is specified, this field is not needed.
NumWorkers int
Number of worker nodes that this cluster should have. A cluster has one Spark driver and num_workers executors for a total of num_workers + 1 Spark nodes.
PolicyId string
Identifier of Cluster Policy to validate cluster and preset certain defaults. The primary use for cluster policies is to allow users to create policy-scoped clusters via UI rather than sharing configuration for API-created clusters. For example, when you specify policy_id of external metastore policy, you still have to fill in relevant keys for spark_conf. If relevant fields aren't filled in, then it will cause the configuration drift detected on each plan/apply, and Pulumi will try to apply the detected changes.
RuntimeEngine string
The type of runtime engine to use. If not specified, the runtime engine type is inferred based on the spark_version value. Allowed values include: PHOTON, STANDARD.
SingleUserName string
The optional user name of the user (or group name if kind if specified) to assign to an interactive cluster. This field is required when using data_security_mode set to SINGLE_USER or AAD Passthrough for Azure Data Lake Storage (ADLS) with a single-user cluster (i.e., not high-concurrency clusters).
SparkConf Dictionary<string, string>
should have following items:

  • spark.databricks.repl.allowedLanguages set to a list of supported languages, for example: python,sql, or python,sql,r. Scala is not supported!
  • spark.databricks.cluster.profile set to serverless
SparkEnvVars Dictionary<string, string>
Map with environment variable key-value pairs to fine-tune Spark clusters. Key-value pairs of the form (X,Y) are exported (i.e., X='Y') while launching the driver and workers.
SshPublicKeys List<string>
SSH public key contents that will be added to each Spark node in this cluster. The corresponding private keys can be used to login with the user name ubuntu on port 2200. You can specify up to 10 keys.
UseMlRuntime bool
Whenever ML runtime should be selected or not. Actual runtime is determined by spark_version (DBR release), this field use_ml_runtime, and whether node_type_id is GPU node or not.
WorkloadType ClusterWorkloadType
SparkVersion This property is required. string
Runtime version of the cluster. Any supported databricks.getSparkVersion id. We advise using Cluster Policies to restrict the list of versions for simplicity while maintaining enough control.
ApplyPolicyDefaultValues bool
Whether to use policy default values for missing cluster attributes.
Autoscale ClusterAutoscaleArgs
AutoterminationMinutes int
Automatically terminate the cluster after being inactive for this time in minutes. If specified, the threshold must be between 10 and 10000 minutes. You can also set this value to 0 to explicitly disable automatic termination. Defaults to 60. We highly recommend having this setting present for Interactive/BI clusters.
AwsAttributes ClusterAwsAttributesArgs
AzureAttributes ClusterAzureAttributesArgs
ClusterLogConf ClusterClusterLogConfArgs
ClusterMountInfos []ClusterClusterMountInfoArgs
ClusterName string
Cluster name, which doesn’t have to be unique. If not specified at creation, the cluster name will be an empty string.
CustomTags map[string]string

should have tag ResourceClass set to value Serverless

For example:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const clusterWithTableAccessControl = new databricks.Cluster("cluster_with_table_access_control", { clusterName: "Shared High-Concurrency", sparkVersion: latestLts.id, nodeTypeId: smallest.id, autoterminationMinutes: 20, sparkConf: { "spark.databricks.repl.allowedLanguages": "python,sql", "spark.databricks.cluster.profile": "serverless", }, customTags: { ResourceClass: "Serverless", }, });

import pulumi
import pulumi_databricks as databricks

cluster_with_table_access_control = databricks.Cluster("cluster_with_table_access_control",
    cluster_name="Shared High-Concurrency",
    spark_version=latest_lts["id"],
    node_type_id=smallest["id"],
    autotermination_minutes=20,
    spark_conf={
        "spark.databricks.repl.allowedLanguages": "python,sql",
        "spark.databricks.cluster.profile": "serverless",
    },
    custom_tags={
        "ResourceClass": "Serverless",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var clusterWithTableAccessControl = new Databricks.Cluster("cluster_with_table_access_control", new()
    {
        ClusterName = "Shared High-Concurrency",
        SparkVersion = latestLts.Id,
        NodeTypeId = smallest.Id,
        AutoterminationMinutes = 20,
        SparkConf = 
        {
            { "spark.databricks.repl.allowedLanguages", "python,sql" },
            { "spark.databricks.cluster.profile", "serverless" },
        },
        CustomTags = 
        {
            { "ResourceClass", "Serverless" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := databricks.NewCluster(ctx, "cluster_with_table_access_control", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Shared High-Concurrency"),
			SparkVersion:           pulumi.Any(latestLts.Id),
			NodeTypeId:             pulumi.Any(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			SparkConf: pulumi.StringMap{
				"spark.databricks.repl.allowedLanguages": pulumi.String("python,sql"),
				"spark.databricks.cluster.profile":       pulumi.String("serverless"),
			},
			CustomTags: pulumi.StringMap{
				"ResourceClass": pulumi.String("Serverless"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var clusterWithTableAccessControl = new Cluster("clusterWithTableAccessControl", ClusterArgs.builder()
            .clusterName("Shared High-Concurrency")
            .sparkVersion(latestLts.id())
            .nodeTypeId(smallest.id())
            .autoterminationMinutes(20)
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.repl.allowedLanguages", "python,sql"),
                Map.entry("spark.databricks.cluster.profile", "serverless")
            ))
            .customTags(Map.of("ResourceClass", "Serverless"))
            .build());

    }
}
resources:
  clusterWithTableAccessControl:
    type: databricks:Cluster
    name: cluster_with_table_access_control
    properties:
      clusterName: Shared High-Concurrency
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      sparkConf:
        spark.databricks.repl.allowedLanguages: python,sql
        spark.databricks.cluster.profile: serverless
      customTags:
        ResourceClass: Serverless
DataSecurityMode string
Select the security features of the cluster (see API docs for full list of values). Unity Catalog requires SINGLE_USER or USER_ISOLATION mode. LEGACY_PASSTHROUGH for passthrough cluster and LEGACY_TABLE_ACL for Table ACL cluster. If omitted, default security features are enabled. To disable security features use NONE or legacy mode NO_ISOLATION. If kind is specified, then the following options are available:

  • DATA_SECURITY_MODE_AUTO: Databricks will choose the most appropriate access mode depending on your compute configuration.
  • DATA_SECURITY_MODE_STANDARD: Alias for USER_ISOLATION.
  • DATA_SECURITY_MODE_DEDICATED: Alias for SINGLE_USER.
DockerImage ClusterDockerImageArgs
DriverInstancePoolId string
similar to instance_pool_id, but for driver node. If omitted, and instance_pool_id is specified, then the driver will be allocated from that pool.
DriverNodeTypeId string
The node type of the Spark driver. This field is optional; if unset, API will set the driver node type to the same value as node_type_id defined above.
EnableElasticDisk bool
If you don’t want to allocate a fixed number of EBS volumes at cluster creation time, use autoscaling local storage. With autoscaling local storage, Databricks monitors the amount of free disk space available on your cluster’s Spark workers. If a worker begins to run too low on disk, Databricks automatically attaches a new EBS volume to the worker before it runs out of disk space. EBS volumes are attached up to a limit of 5 TB of total disk space per instance (including the instance’s local storage). To scale down EBS usage, make sure you have autotermination_minutes and autoscale attributes set. More documentation available at cluster configuration page.
EnableLocalDiskEncryption bool
Some instance types you use to run clusters may have locally attached disks. Databricks may store shuffle data or temporary data on these locally attached disks. To ensure that all data at rest is encrypted for all storage types, including shuffle data stored temporarily on your cluster’s local disks, you can enable local disk encryption. When local disk encryption is enabled, Databricks generates an encryption key locally unique to each cluster node and uses it to encrypt all data stored on local disks. The scope of the key is local to each cluster node and is destroyed along with the cluster node itself. During its lifetime, the key resides in memory for encryption and decryption and is stored encrypted on the disk. Your workloads may run more slowly because of the performance impact of reading and writing encrypted data to and from local volumes. This feature is not available for all Azure Databricks subscriptions. Contact your Microsoft or Databricks account representative to request access.
GcpAttributes ClusterGcpAttributesArgs
IdempotencyToken Changes to this property will trigger replacement. string
An optional token to guarantee the idempotency of cluster creation requests. If an active cluster with the provided token already exists, the request will not create a new cluster, but it will return the existing running cluster's ID instead. If you specify the idempotency token, upon failure, you can retry until the request succeeds. Databricks platform guarantees to launch exactly one cluster with that idempotency token. This token should have at most 64 characters.
InitScripts []ClusterInitScriptArgs
InstancePoolId string
To reduce cluster start time, you can attach a cluster to a predefined pool of idle instances. When attached to a pool, a cluster allocates its driver and worker nodes from the pool. If the pool does not have sufficient idle resources to accommodate the cluster’s request, it expands by allocating new instances from the instance provider. When an attached cluster changes its state to TERMINATED, the instances it used are returned to the pool and reused by a different cluster.
IsPinned bool
boolean value specifying if the cluster is pinned (not pinned by default). You must be a Databricks administrator to use this. The pinned clusters' maximum number is limited to 100, so apply may fail if you have more than that (this number may change over time, so check Databricks documentation for actual number).
IsSingleNode bool
When set to true, Databricks will automatically set single node related custom_tags, spark_conf, and num_workers.
Kind string
The kind of compute described by this compute specification. Possible values (see API docs for full list): CLASSIC_PREVIEW (if corresponding public preview is enabled).
Libraries []ClusterLibraryArgs
NoWait bool

If true, the provider will not wait for the cluster to reach RUNNING state when creating the cluster, allowing cluster creation and library installation to continue asynchronously. Defaults to false (the provider will wait for cluster creation and library installation to succeed).

The following example demonstrates how to create an autoscaling cluster with Delta Cache enabled:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const smallest = databricks.getNodeType({ localDisk: true, }); const latestLts = databricks.getSparkVersion({ longTermSupport: true, }); const sharedAutoscaling = new databricks.Cluster("shared_autoscaling", { clusterName: "Shared Autoscaling", sparkVersion: latestLts.then(latestLts => latestLts.id), nodeTypeId: smallest.then(smallest => smallest.id), autoterminationMinutes: 20, autoscale: { minWorkers: 1, maxWorkers: 50, }, sparkConf: { "spark.databricks.io.cache.enabled": "true", "spark.databricks.io.cache.maxDiskUsage": "50g", "spark.databricks.io.cache.maxMetaDataCache": "1g", }, });

import pulumi
import pulumi_databricks as databricks

smallest = databricks.get_node_type(local_disk=True)
latest_lts = databricks.get_spark_version(long_term_support=True)
shared_autoscaling = databricks.Cluster("shared_autoscaling",
    cluster_name="Shared Autoscaling",
    spark_version=latest_lts.id,
    node_type_id=smallest.id,
    autotermination_minutes=20,
    autoscale={
        "min_workers": 1,
        "max_workers": 50,
    },
    spark_conf={
        "spark.databricks.io.cache.enabled": "true",
        "spark.databricks.io.cache.maxDiskUsage": "50g",
        "spark.databricks.io.cache.maxMetaDataCache": "1g",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var smallest = Databricks.GetNodeType.Invoke(new()
    {
        LocalDisk = true,
    });

    var latestLts = Databricks.GetSparkVersion.Invoke(new()
    {
        LongTermSupport = true,
    });

    var sharedAutoscaling = new Databricks.Cluster("shared_autoscaling", new()
    {
        ClusterName = "Shared Autoscaling",
        SparkVersion = latestLts.Apply(getSparkVersionResult => getSparkVersionResult.Id),
        NodeTypeId = smallest.Apply(getNodeTypeResult => getNodeTypeResult.Id),
        AutoterminationMinutes = 20,
        Autoscale = new Databricks.Inputs.ClusterAutoscaleArgs
        {
            MinWorkers = 1,
            MaxWorkers = 50,
        },
        SparkConf = 
        {
            { "spark.databricks.io.cache.enabled", "true" },
            { "spark.databricks.io.cache.maxDiskUsage", "50g" },
            { "spark.databricks.io.cache.maxMetaDataCache", "1g" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		smallest, err := databricks.GetNodeType(ctx, &databricks.GetNodeTypeArgs{
			LocalDisk: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		latestLts, err := databricks.GetSparkVersion(ctx, &databricks.GetSparkVersionArgs{
			LongTermSupport: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		_, err = databricks.NewCluster(ctx, "shared_autoscaling", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Shared Autoscaling"),
			SparkVersion:           pulumi.String(latestLts.Id),
			NodeTypeId:             pulumi.String(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			Autoscale: &databricks.ClusterAutoscaleArgs{
				MinWorkers: pulumi.Int(1),
				MaxWorkers: pulumi.Int(50),
			},
			SparkConf: pulumi.StringMap{
				"spark.databricks.io.cache.enabled":          pulumi.String("true"),
				"spark.databricks.io.cache.maxDiskUsage":     pulumi.String("50g"),
				"spark.databricks.io.cache.maxMetaDataCache": pulumi.String("1g"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.DatabricksFunctions;
import com.pulumi.databricks.inputs.GetNodeTypeArgs;
import com.pulumi.databricks.inputs.GetSparkVersionArgs;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterAutoscaleArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        final var smallest = DatabricksFunctions.getNodeType(GetNodeTypeArgs.builder()
            .localDisk(true)
            .build());

        final var latestLts = DatabricksFunctions.getSparkVersion(GetSparkVersionArgs.builder()
            .longTermSupport(true)
            .build());

        var sharedAutoscaling = new Cluster("sharedAutoscaling", ClusterArgs.builder()
            .clusterName("Shared Autoscaling")
            .sparkVersion(latestLts.applyValue(getSparkVersionResult -> getSparkVersionResult.id()))
            .nodeTypeId(smallest.applyValue(getNodeTypeResult -> getNodeTypeResult.id()))
            .autoterminationMinutes(20)
            .autoscale(ClusterAutoscaleArgs.builder()
                .minWorkers(1)
                .maxWorkers(50)
                .build())
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.io.cache.enabled", true),
                Map.entry("spark.databricks.io.cache.maxDiskUsage", "50g"),
                Map.entry("spark.databricks.io.cache.maxMetaDataCache", "1g")
            ))
            .build());

    }
}
resources:
  sharedAutoscaling:
    type: databricks:Cluster
    name: shared_autoscaling
    properties:
      clusterName: Shared Autoscaling
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      autoscale:
        minWorkers: 1
        maxWorkers: 50
      sparkConf:
        spark.databricks.io.cache.enabled: true
        spark.databricks.io.cache.maxDiskUsage: 50g
        spark.databricks.io.cache.maxMetaDataCache: 1g
variables:
  smallest:
    fn::invoke:
      function: databricks:getNodeType
      arguments:
        localDisk: true
  latestLts:
    fn::invoke:
      function: databricks:getSparkVersion
      arguments:
        longTermSupport: true
NodeTypeId string
Any supported databricks.getNodeType id. If instance_pool_id is specified, this field is not needed.
NumWorkers int
Number of worker nodes that this cluster should have. A cluster has one Spark driver and num_workers executors for a total of num_workers + 1 Spark nodes.
PolicyId string
Identifier of Cluster Policy to validate cluster and preset certain defaults. The primary use for cluster policies is to allow users to create policy-scoped clusters via UI rather than sharing configuration for API-created clusters. For example, when you specify policy_id of external metastore policy, you still have to fill in relevant keys for spark_conf. If relevant fields aren't filled in, then it will cause the configuration drift detected on each plan/apply, and Pulumi will try to apply the detected changes.
RuntimeEngine string
The type of runtime engine to use. If not specified, the runtime engine type is inferred based on the spark_version value. Allowed values include: PHOTON, STANDARD.
SingleUserName string
The optional user name of the user (or group name if kind if specified) to assign to an interactive cluster. This field is required when using data_security_mode set to SINGLE_USER or AAD Passthrough for Azure Data Lake Storage (ADLS) with a single-user cluster (i.e., not high-concurrency clusters).
SparkConf map[string]string
should have following items:

  • spark.databricks.repl.allowedLanguages set to a list of supported languages, for example: python,sql, or python,sql,r. Scala is not supported!
  • spark.databricks.cluster.profile set to serverless
SparkEnvVars map[string]string
Map with environment variable key-value pairs to fine-tune Spark clusters. Key-value pairs of the form (X,Y) are exported (i.e., X='Y') while launching the driver and workers.
SshPublicKeys []string
SSH public key contents that will be added to each Spark node in this cluster. The corresponding private keys can be used to login with the user name ubuntu on port 2200. You can specify up to 10 keys.
UseMlRuntime bool
Whenever ML runtime should be selected or not. Actual runtime is determined by spark_version (DBR release), this field use_ml_runtime, and whether node_type_id is GPU node or not.
WorkloadType ClusterWorkloadTypeArgs
sparkVersion This property is required. String
Runtime version of the cluster. Any supported databricks.getSparkVersion id. We advise using Cluster Policies to restrict the list of versions for simplicity while maintaining enough control.
applyPolicyDefaultValues Boolean
Whether to use policy default values for missing cluster attributes.
autoscale ClusterAutoscale
autoterminationMinutes Integer
Automatically terminate the cluster after being inactive for this time in minutes. If specified, the threshold must be between 10 and 10000 minutes. You can also set this value to 0 to explicitly disable automatic termination. Defaults to 60. We highly recommend having this setting present for Interactive/BI clusters.
awsAttributes ClusterAwsAttributes
azureAttributes ClusterAzureAttributes
clusterLogConf ClusterClusterLogConf
clusterMountInfos List<ClusterClusterMountInfo>
clusterName String
Cluster name, which doesn’t have to be unique. If not specified at creation, the cluster name will be an empty string.
customTags Map<String,String>

should have tag ResourceClass set to value Serverless

For example:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const clusterWithTableAccessControl = new databricks.Cluster("cluster_with_table_access_control", { clusterName: "Shared High-Concurrency", sparkVersion: latestLts.id, nodeTypeId: smallest.id, autoterminationMinutes: 20, sparkConf: { "spark.databricks.repl.allowedLanguages": "python,sql", "spark.databricks.cluster.profile": "serverless", }, customTags: { ResourceClass: "Serverless", }, });

import pulumi
import pulumi_databricks as databricks

cluster_with_table_access_control = databricks.Cluster("cluster_with_table_access_control",
    cluster_name="Shared High-Concurrency",
    spark_version=latest_lts["id"],
    node_type_id=smallest["id"],
    autotermination_minutes=20,
    spark_conf={
        "spark.databricks.repl.allowedLanguages": "python,sql",
        "spark.databricks.cluster.profile": "serverless",
    },
    custom_tags={
        "ResourceClass": "Serverless",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var clusterWithTableAccessControl = new Databricks.Cluster("cluster_with_table_access_control", new()
    {
        ClusterName = "Shared High-Concurrency",
        SparkVersion = latestLts.Id,
        NodeTypeId = smallest.Id,
        AutoterminationMinutes = 20,
        SparkConf = 
        {
            { "spark.databricks.repl.allowedLanguages", "python,sql" },
            { "spark.databricks.cluster.profile", "serverless" },
        },
        CustomTags = 
        {
            { "ResourceClass", "Serverless" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := databricks.NewCluster(ctx, "cluster_with_table_access_control", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Shared High-Concurrency"),
			SparkVersion:           pulumi.Any(latestLts.Id),
			NodeTypeId:             pulumi.Any(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			SparkConf: pulumi.StringMap{
				"spark.databricks.repl.allowedLanguages": pulumi.String("python,sql"),
				"spark.databricks.cluster.profile":       pulumi.String("serverless"),
			},
			CustomTags: pulumi.StringMap{
				"ResourceClass": pulumi.String("Serverless"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var clusterWithTableAccessControl = new Cluster("clusterWithTableAccessControl", ClusterArgs.builder()
            .clusterName("Shared High-Concurrency")
            .sparkVersion(latestLts.id())
            .nodeTypeId(smallest.id())
            .autoterminationMinutes(20)
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.repl.allowedLanguages", "python,sql"),
                Map.entry("spark.databricks.cluster.profile", "serverless")
            ))
            .customTags(Map.of("ResourceClass", "Serverless"))
            .build());

    }
}
resources:
  clusterWithTableAccessControl:
    type: databricks:Cluster
    name: cluster_with_table_access_control
    properties:
      clusterName: Shared High-Concurrency
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      sparkConf:
        spark.databricks.repl.allowedLanguages: python,sql
        spark.databricks.cluster.profile: serverless
      customTags:
        ResourceClass: Serverless
dataSecurityMode String
Select the security features of the cluster (see API docs for full list of values). Unity Catalog requires SINGLE_USER or USER_ISOLATION mode. LEGACY_PASSTHROUGH for passthrough cluster and LEGACY_TABLE_ACL for Table ACL cluster. If omitted, default security features are enabled. To disable security features use NONE or legacy mode NO_ISOLATION. If kind is specified, then the following options are available:

  • DATA_SECURITY_MODE_AUTO: Databricks will choose the most appropriate access mode depending on your compute configuration.
  • DATA_SECURITY_MODE_STANDARD: Alias for USER_ISOLATION.
  • DATA_SECURITY_MODE_DEDICATED: Alias for SINGLE_USER.
dockerImage ClusterDockerImage
driverInstancePoolId String
similar to instance_pool_id, but for driver node. If omitted, and instance_pool_id is specified, then the driver will be allocated from that pool.
driverNodeTypeId String
The node type of the Spark driver. This field is optional; if unset, API will set the driver node type to the same value as node_type_id defined above.
enableElasticDisk Boolean
If you don’t want to allocate a fixed number of EBS volumes at cluster creation time, use autoscaling local storage. With autoscaling local storage, Databricks monitors the amount of free disk space available on your cluster’s Spark workers. If a worker begins to run too low on disk, Databricks automatically attaches a new EBS volume to the worker before it runs out of disk space. EBS volumes are attached up to a limit of 5 TB of total disk space per instance (including the instance’s local storage). To scale down EBS usage, make sure you have autotermination_minutes and autoscale attributes set. More documentation available at cluster configuration page.
enableLocalDiskEncryption Boolean
Some instance types you use to run clusters may have locally attached disks. Databricks may store shuffle data or temporary data on these locally attached disks. To ensure that all data at rest is encrypted for all storage types, including shuffle data stored temporarily on your cluster’s local disks, you can enable local disk encryption. When local disk encryption is enabled, Databricks generates an encryption key locally unique to each cluster node and uses it to encrypt all data stored on local disks. The scope of the key is local to each cluster node and is destroyed along with the cluster node itself. During its lifetime, the key resides in memory for encryption and decryption and is stored encrypted on the disk. Your workloads may run more slowly because of the performance impact of reading and writing encrypted data to and from local volumes. This feature is not available for all Azure Databricks subscriptions. Contact your Microsoft or Databricks account representative to request access.
gcpAttributes ClusterGcpAttributes
idempotencyToken Changes to this property will trigger replacement. String
An optional token to guarantee the idempotency of cluster creation requests. If an active cluster with the provided token already exists, the request will not create a new cluster, but it will return the existing running cluster's ID instead. If you specify the idempotency token, upon failure, you can retry until the request succeeds. Databricks platform guarantees to launch exactly one cluster with that idempotency token. This token should have at most 64 characters.
initScripts List<ClusterInitScript>
instancePoolId String
To reduce cluster start time, you can attach a cluster to a predefined pool of idle instances. When attached to a pool, a cluster allocates its driver and worker nodes from the pool. If the pool does not have sufficient idle resources to accommodate the cluster’s request, it expands by allocating new instances from the instance provider. When an attached cluster changes its state to TERMINATED, the instances it used are returned to the pool and reused by a different cluster.
isPinned Boolean
boolean value specifying if the cluster is pinned (not pinned by default). You must be a Databricks administrator to use this. The pinned clusters' maximum number is limited to 100, so apply may fail if you have more than that (this number may change over time, so check Databricks documentation for actual number).
isSingleNode Boolean
When set to true, Databricks will automatically set single node related custom_tags, spark_conf, and num_workers.
kind String
The kind of compute described by this compute specification. Possible values (see API docs for full list): CLASSIC_PREVIEW (if corresponding public preview is enabled).
libraries List<ClusterLibrary>
noWait Boolean

If true, the provider will not wait for the cluster to reach RUNNING state when creating the cluster, allowing cluster creation and library installation to continue asynchronously. Defaults to false (the provider will wait for cluster creation and library installation to succeed).

The following example demonstrates how to create an autoscaling cluster with Delta Cache enabled:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const smallest = databricks.getNodeType({ localDisk: true, }); const latestLts = databricks.getSparkVersion({ longTermSupport: true, }); const sharedAutoscaling = new databricks.Cluster("shared_autoscaling", { clusterName: "Shared Autoscaling", sparkVersion: latestLts.then(latestLts => latestLts.id), nodeTypeId: smallest.then(smallest => smallest.id), autoterminationMinutes: 20, autoscale: { minWorkers: 1, maxWorkers: 50, }, sparkConf: { "spark.databricks.io.cache.enabled": "true", "spark.databricks.io.cache.maxDiskUsage": "50g", "spark.databricks.io.cache.maxMetaDataCache": "1g", }, });

import pulumi
import pulumi_databricks as databricks

smallest = databricks.get_node_type(local_disk=True)
latest_lts = databricks.get_spark_version(long_term_support=True)
shared_autoscaling = databricks.Cluster("shared_autoscaling",
    cluster_name="Shared Autoscaling",
    spark_version=latest_lts.id,
    node_type_id=smallest.id,
    autotermination_minutes=20,
    autoscale={
        "min_workers": 1,
        "max_workers": 50,
    },
    spark_conf={
        "spark.databricks.io.cache.enabled": "true",
        "spark.databricks.io.cache.maxDiskUsage": "50g",
        "spark.databricks.io.cache.maxMetaDataCache": "1g",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var smallest = Databricks.GetNodeType.Invoke(new()
    {
        LocalDisk = true,
    });

    var latestLts = Databricks.GetSparkVersion.Invoke(new()
    {
        LongTermSupport = true,
    });

    var sharedAutoscaling = new Databricks.Cluster("shared_autoscaling", new()
    {
        ClusterName = "Shared Autoscaling",
        SparkVersion = latestLts.Apply(getSparkVersionResult => getSparkVersionResult.Id),
        NodeTypeId = smallest.Apply(getNodeTypeResult => getNodeTypeResult.Id),
        AutoterminationMinutes = 20,
        Autoscale = new Databricks.Inputs.ClusterAutoscaleArgs
        {
            MinWorkers = 1,
            MaxWorkers = 50,
        },
        SparkConf = 
        {
            { "spark.databricks.io.cache.enabled", "true" },
            { "spark.databricks.io.cache.maxDiskUsage", "50g" },
            { "spark.databricks.io.cache.maxMetaDataCache", "1g" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		smallest, err := databricks.GetNodeType(ctx, &databricks.GetNodeTypeArgs{
			LocalDisk: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		latestLts, err := databricks.GetSparkVersion(ctx, &databricks.GetSparkVersionArgs{
			LongTermSupport: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		_, err = databricks.NewCluster(ctx, "shared_autoscaling", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Shared Autoscaling"),
			SparkVersion:           pulumi.String(latestLts.Id),
			NodeTypeId:             pulumi.String(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			Autoscale: &databricks.ClusterAutoscaleArgs{
				MinWorkers: pulumi.Int(1),
				MaxWorkers: pulumi.Int(50),
			},
			SparkConf: pulumi.StringMap{
				"spark.databricks.io.cache.enabled":          pulumi.String("true"),
				"spark.databricks.io.cache.maxDiskUsage":     pulumi.String("50g"),
				"spark.databricks.io.cache.maxMetaDataCache": pulumi.String("1g"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.DatabricksFunctions;
import com.pulumi.databricks.inputs.GetNodeTypeArgs;
import com.pulumi.databricks.inputs.GetSparkVersionArgs;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterAutoscaleArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        final var smallest = DatabricksFunctions.getNodeType(GetNodeTypeArgs.builder()
            .localDisk(true)
            .build());

        final var latestLts = DatabricksFunctions.getSparkVersion(GetSparkVersionArgs.builder()
            .longTermSupport(true)
            .build());

        var sharedAutoscaling = new Cluster("sharedAutoscaling", ClusterArgs.builder()
            .clusterName("Shared Autoscaling")
            .sparkVersion(latestLts.applyValue(getSparkVersionResult -> getSparkVersionResult.id()))
            .nodeTypeId(smallest.applyValue(getNodeTypeResult -> getNodeTypeResult.id()))
            .autoterminationMinutes(20)
            .autoscale(ClusterAutoscaleArgs.builder()
                .minWorkers(1)
                .maxWorkers(50)
                .build())
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.io.cache.enabled", true),
                Map.entry("spark.databricks.io.cache.maxDiskUsage", "50g"),
                Map.entry("spark.databricks.io.cache.maxMetaDataCache", "1g")
            ))
            .build());

    }
}
resources:
  sharedAutoscaling:
    type: databricks:Cluster
    name: shared_autoscaling
    properties:
      clusterName: Shared Autoscaling
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      autoscale:
        minWorkers: 1
        maxWorkers: 50
      sparkConf:
        spark.databricks.io.cache.enabled: true
        spark.databricks.io.cache.maxDiskUsage: 50g
        spark.databricks.io.cache.maxMetaDataCache: 1g
variables:
  smallest:
    fn::invoke:
      function: databricks:getNodeType
      arguments:
        localDisk: true
  latestLts:
    fn::invoke:
      function: databricks:getSparkVersion
      arguments:
        longTermSupport: true
nodeTypeId String
Any supported databricks.getNodeType id. If instance_pool_id is specified, this field is not needed.
numWorkers Integer
Number of worker nodes that this cluster should have. A cluster has one Spark driver and num_workers executors for a total of num_workers + 1 Spark nodes.
policyId String
Identifier of Cluster Policy to validate cluster and preset certain defaults. The primary use for cluster policies is to allow users to create policy-scoped clusters via UI rather than sharing configuration for API-created clusters. For example, when you specify policy_id of external metastore policy, you still have to fill in relevant keys for spark_conf. If relevant fields aren't filled in, then it will cause the configuration drift detected on each plan/apply, and Pulumi will try to apply the detected changes.
runtimeEngine String
The type of runtime engine to use. If not specified, the runtime engine type is inferred based on the spark_version value. Allowed values include: PHOTON, STANDARD.
singleUserName String
The optional user name of the user (or group name if kind if specified) to assign to an interactive cluster. This field is required when using data_security_mode set to SINGLE_USER or AAD Passthrough for Azure Data Lake Storage (ADLS) with a single-user cluster (i.e., not high-concurrency clusters).
sparkConf Map<String,String>
should have following items:

  • spark.databricks.repl.allowedLanguages set to a list of supported languages, for example: python,sql, or python,sql,r. Scala is not supported!
  • spark.databricks.cluster.profile set to serverless
sparkEnvVars Map<String,String>
Map with environment variable key-value pairs to fine-tune Spark clusters. Key-value pairs of the form (X,Y) are exported (i.e., X='Y') while launching the driver and workers.
sshPublicKeys List<String>
SSH public key contents that will be added to each Spark node in this cluster. The corresponding private keys can be used to login with the user name ubuntu on port 2200. You can specify up to 10 keys.
useMlRuntime Boolean
Whenever ML runtime should be selected or not. Actual runtime is determined by spark_version (DBR release), this field use_ml_runtime, and whether node_type_id is GPU node or not.
workloadType ClusterWorkloadType
sparkVersion This property is required. string
Runtime version of the cluster. Any supported databricks.getSparkVersion id. We advise using Cluster Policies to restrict the list of versions for simplicity while maintaining enough control.
applyPolicyDefaultValues boolean
Whether to use policy default values for missing cluster attributes.
autoscale ClusterAutoscale
autoterminationMinutes number
Automatically terminate the cluster after being inactive for this time in minutes. If specified, the threshold must be between 10 and 10000 minutes. You can also set this value to 0 to explicitly disable automatic termination. Defaults to 60. We highly recommend having this setting present for Interactive/BI clusters.
awsAttributes ClusterAwsAttributes
azureAttributes ClusterAzureAttributes
clusterLogConf ClusterClusterLogConf
clusterMountInfos ClusterClusterMountInfo[]
clusterName string
Cluster name, which doesn’t have to be unique. If not specified at creation, the cluster name will be an empty string.
customTags {[key: string]: string}

should have tag ResourceClass set to value Serverless

For example:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const clusterWithTableAccessControl = new databricks.Cluster("cluster_with_table_access_control", { clusterName: "Shared High-Concurrency", sparkVersion: latestLts.id, nodeTypeId: smallest.id, autoterminationMinutes: 20, sparkConf: { "spark.databricks.repl.allowedLanguages": "python,sql", "spark.databricks.cluster.profile": "serverless", }, customTags: { ResourceClass: "Serverless", }, });

import pulumi
import pulumi_databricks as databricks

cluster_with_table_access_control = databricks.Cluster("cluster_with_table_access_control",
    cluster_name="Shared High-Concurrency",
    spark_version=latest_lts["id"],
    node_type_id=smallest["id"],
    autotermination_minutes=20,
    spark_conf={
        "spark.databricks.repl.allowedLanguages": "python,sql",
        "spark.databricks.cluster.profile": "serverless",
    },
    custom_tags={
        "ResourceClass": "Serverless",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var clusterWithTableAccessControl = new Databricks.Cluster("cluster_with_table_access_control", new()
    {
        ClusterName = "Shared High-Concurrency",
        SparkVersion = latestLts.Id,
        NodeTypeId = smallest.Id,
        AutoterminationMinutes = 20,
        SparkConf = 
        {
            { "spark.databricks.repl.allowedLanguages", "python,sql" },
            { "spark.databricks.cluster.profile", "serverless" },
        },
        CustomTags = 
        {
            { "ResourceClass", "Serverless" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := databricks.NewCluster(ctx, "cluster_with_table_access_control", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Shared High-Concurrency"),
			SparkVersion:           pulumi.Any(latestLts.Id),
			NodeTypeId:             pulumi.Any(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			SparkConf: pulumi.StringMap{
				"spark.databricks.repl.allowedLanguages": pulumi.String("python,sql"),
				"spark.databricks.cluster.profile":       pulumi.String("serverless"),
			},
			CustomTags: pulumi.StringMap{
				"ResourceClass": pulumi.String("Serverless"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var clusterWithTableAccessControl = new Cluster("clusterWithTableAccessControl", ClusterArgs.builder()
            .clusterName("Shared High-Concurrency")
            .sparkVersion(latestLts.id())
            .nodeTypeId(smallest.id())
            .autoterminationMinutes(20)
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.repl.allowedLanguages", "python,sql"),
                Map.entry("spark.databricks.cluster.profile", "serverless")
            ))
            .customTags(Map.of("ResourceClass", "Serverless"))
            .build());

    }
}
resources:
  clusterWithTableAccessControl:
    type: databricks:Cluster
    name: cluster_with_table_access_control
    properties:
      clusterName: Shared High-Concurrency
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      sparkConf:
        spark.databricks.repl.allowedLanguages: python,sql
        spark.databricks.cluster.profile: serverless
      customTags:
        ResourceClass: Serverless
dataSecurityMode string
Select the security features of the cluster (see API docs for full list of values). Unity Catalog requires SINGLE_USER or USER_ISOLATION mode. LEGACY_PASSTHROUGH for passthrough cluster and LEGACY_TABLE_ACL for Table ACL cluster. If omitted, default security features are enabled. To disable security features use NONE or legacy mode NO_ISOLATION. If kind is specified, then the following options are available:

  • DATA_SECURITY_MODE_AUTO: Databricks will choose the most appropriate access mode depending on your compute configuration.
  • DATA_SECURITY_MODE_STANDARD: Alias for USER_ISOLATION.
  • DATA_SECURITY_MODE_DEDICATED: Alias for SINGLE_USER.
dockerImage ClusterDockerImage
driverInstancePoolId string
similar to instance_pool_id, but for driver node. If omitted, and instance_pool_id is specified, then the driver will be allocated from that pool.
driverNodeTypeId string
The node type of the Spark driver. This field is optional; if unset, API will set the driver node type to the same value as node_type_id defined above.
enableElasticDisk boolean
If you don’t want to allocate a fixed number of EBS volumes at cluster creation time, use autoscaling local storage. With autoscaling local storage, Databricks monitors the amount of free disk space available on your cluster’s Spark workers. If a worker begins to run too low on disk, Databricks automatically attaches a new EBS volume to the worker before it runs out of disk space. EBS volumes are attached up to a limit of 5 TB of total disk space per instance (including the instance’s local storage). To scale down EBS usage, make sure you have autotermination_minutes and autoscale attributes set. More documentation available at cluster configuration page.
enableLocalDiskEncryption boolean
Some instance types you use to run clusters may have locally attached disks. Databricks may store shuffle data or temporary data on these locally attached disks. To ensure that all data at rest is encrypted for all storage types, including shuffle data stored temporarily on your cluster’s local disks, you can enable local disk encryption. When local disk encryption is enabled, Databricks generates an encryption key locally unique to each cluster node and uses it to encrypt all data stored on local disks. The scope of the key is local to each cluster node and is destroyed along with the cluster node itself. During its lifetime, the key resides in memory for encryption and decryption and is stored encrypted on the disk. Your workloads may run more slowly because of the performance impact of reading and writing encrypted data to and from local volumes. This feature is not available for all Azure Databricks subscriptions. Contact your Microsoft or Databricks account representative to request access.
gcpAttributes ClusterGcpAttributes
idempotencyToken Changes to this property will trigger replacement. string
An optional token to guarantee the idempotency of cluster creation requests. If an active cluster with the provided token already exists, the request will not create a new cluster, but it will return the existing running cluster's ID instead. If you specify the idempotency token, upon failure, you can retry until the request succeeds. Databricks platform guarantees to launch exactly one cluster with that idempotency token. This token should have at most 64 characters.
initScripts ClusterInitScript[]
instancePoolId string
To reduce cluster start time, you can attach a cluster to a predefined pool of idle instances. When attached to a pool, a cluster allocates its driver and worker nodes from the pool. If the pool does not have sufficient idle resources to accommodate the cluster’s request, it expands by allocating new instances from the instance provider. When an attached cluster changes its state to TERMINATED, the instances it used are returned to the pool and reused by a different cluster.
isPinned boolean
boolean value specifying if the cluster is pinned (not pinned by default). You must be a Databricks administrator to use this. The pinned clusters' maximum number is limited to 100, so apply may fail if you have more than that (this number may change over time, so check Databricks documentation for actual number).
isSingleNode boolean
When set to true, Databricks will automatically set single node related custom_tags, spark_conf, and num_workers.
kind string
The kind of compute described by this compute specification. Possible values (see API docs for full list): CLASSIC_PREVIEW (if corresponding public preview is enabled).
libraries ClusterLibrary[]
noWait boolean

If true, the provider will not wait for the cluster to reach RUNNING state when creating the cluster, allowing cluster creation and library installation to continue asynchronously. Defaults to false (the provider will wait for cluster creation and library installation to succeed).

The following example demonstrates how to create an autoscaling cluster with Delta Cache enabled:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const smallest = databricks.getNodeType({ localDisk: true, }); const latestLts = databricks.getSparkVersion({ longTermSupport: true, }); const sharedAutoscaling = new databricks.Cluster("shared_autoscaling", { clusterName: "Shared Autoscaling", sparkVersion: latestLts.then(latestLts => latestLts.id), nodeTypeId: smallest.then(smallest => smallest.id), autoterminationMinutes: 20, autoscale: { minWorkers: 1, maxWorkers: 50, }, sparkConf: { "spark.databricks.io.cache.enabled": "true", "spark.databricks.io.cache.maxDiskUsage": "50g", "spark.databricks.io.cache.maxMetaDataCache": "1g", }, });

import pulumi
import pulumi_databricks as databricks

smallest = databricks.get_node_type(local_disk=True)
latest_lts = databricks.get_spark_version(long_term_support=True)
shared_autoscaling = databricks.Cluster("shared_autoscaling",
    cluster_name="Shared Autoscaling",
    spark_version=latest_lts.id,
    node_type_id=smallest.id,
    autotermination_minutes=20,
    autoscale={
        "min_workers": 1,
        "max_workers": 50,
    },
    spark_conf={
        "spark.databricks.io.cache.enabled": "true",
        "spark.databricks.io.cache.maxDiskUsage": "50g",
        "spark.databricks.io.cache.maxMetaDataCache": "1g",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var smallest = Databricks.GetNodeType.Invoke(new()
    {
        LocalDisk = true,
    });

    var latestLts = Databricks.GetSparkVersion.Invoke(new()
    {
        LongTermSupport = true,
    });

    var sharedAutoscaling = new Databricks.Cluster("shared_autoscaling", new()
    {
        ClusterName = "Shared Autoscaling",
        SparkVersion = latestLts.Apply(getSparkVersionResult => getSparkVersionResult.Id),
        NodeTypeId = smallest.Apply(getNodeTypeResult => getNodeTypeResult.Id),
        AutoterminationMinutes = 20,
        Autoscale = new Databricks.Inputs.ClusterAutoscaleArgs
        {
            MinWorkers = 1,
            MaxWorkers = 50,
        },
        SparkConf = 
        {
            { "spark.databricks.io.cache.enabled", "true" },
            { "spark.databricks.io.cache.maxDiskUsage", "50g" },
            { "spark.databricks.io.cache.maxMetaDataCache", "1g" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		smallest, err := databricks.GetNodeType(ctx, &databricks.GetNodeTypeArgs{
			LocalDisk: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		latestLts, err := databricks.GetSparkVersion(ctx, &databricks.GetSparkVersionArgs{
			LongTermSupport: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		_, err = databricks.NewCluster(ctx, "shared_autoscaling", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Shared Autoscaling"),
			SparkVersion:           pulumi.String(latestLts.Id),
			NodeTypeId:             pulumi.String(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			Autoscale: &databricks.ClusterAutoscaleArgs{
				MinWorkers: pulumi.Int(1),
				MaxWorkers: pulumi.Int(50),
			},
			SparkConf: pulumi.StringMap{
				"spark.databricks.io.cache.enabled":          pulumi.String("true"),
				"spark.databricks.io.cache.maxDiskUsage":     pulumi.String("50g"),
				"spark.databricks.io.cache.maxMetaDataCache": pulumi.String("1g"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.DatabricksFunctions;
import com.pulumi.databricks.inputs.GetNodeTypeArgs;
import com.pulumi.databricks.inputs.GetSparkVersionArgs;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterAutoscaleArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        final var smallest = DatabricksFunctions.getNodeType(GetNodeTypeArgs.builder()
            .localDisk(true)
            .build());

        final var latestLts = DatabricksFunctions.getSparkVersion(GetSparkVersionArgs.builder()
            .longTermSupport(true)
            .build());

        var sharedAutoscaling = new Cluster("sharedAutoscaling", ClusterArgs.builder()
            .clusterName("Shared Autoscaling")
            .sparkVersion(latestLts.applyValue(getSparkVersionResult -> getSparkVersionResult.id()))
            .nodeTypeId(smallest.applyValue(getNodeTypeResult -> getNodeTypeResult.id()))
            .autoterminationMinutes(20)
            .autoscale(ClusterAutoscaleArgs.builder()
                .minWorkers(1)
                .maxWorkers(50)
                .build())
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.io.cache.enabled", true),
                Map.entry("spark.databricks.io.cache.maxDiskUsage", "50g"),
                Map.entry("spark.databricks.io.cache.maxMetaDataCache", "1g")
            ))
            .build());

    }
}
resources:
  sharedAutoscaling:
    type: databricks:Cluster
    name: shared_autoscaling
    properties:
      clusterName: Shared Autoscaling
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      autoscale:
        minWorkers: 1
        maxWorkers: 50
      sparkConf:
        spark.databricks.io.cache.enabled: true
        spark.databricks.io.cache.maxDiskUsage: 50g
        spark.databricks.io.cache.maxMetaDataCache: 1g
variables:
  smallest:
    fn::invoke:
      function: databricks:getNodeType
      arguments:
        localDisk: true
  latestLts:
    fn::invoke:
      function: databricks:getSparkVersion
      arguments:
        longTermSupport: true
nodeTypeId string
Any supported databricks.getNodeType id. If instance_pool_id is specified, this field is not needed.
numWorkers number
Number of worker nodes that this cluster should have. A cluster has one Spark driver and num_workers executors for a total of num_workers + 1 Spark nodes.
policyId string
Identifier of Cluster Policy to validate cluster and preset certain defaults. The primary use for cluster policies is to allow users to create policy-scoped clusters via UI rather than sharing configuration for API-created clusters. For example, when you specify policy_id of external metastore policy, you still have to fill in relevant keys for spark_conf. If relevant fields aren't filled in, then it will cause the configuration drift detected on each plan/apply, and Pulumi will try to apply the detected changes.
runtimeEngine string
The type of runtime engine to use. If not specified, the runtime engine type is inferred based on the spark_version value. Allowed values include: PHOTON, STANDARD.
singleUserName string
The optional user name of the user (or group name if kind if specified) to assign to an interactive cluster. This field is required when using data_security_mode set to SINGLE_USER or AAD Passthrough for Azure Data Lake Storage (ADLS) with a single-user cluster (i.e., not high-concurrency clusters).
sparkConf {[key: string]: string}
should have following items:

  • spark.databricks.repl.allowedLanguages set to a list of supported languages, for example: python,sql, or python,sql,r. Scala is not supported!
  • spark.databricks.cluster.profile set to serverless
sparkEnvVars {[key: string]: string}
Map with environment variable key-value pairs to fine-tune Spark clusters. Key-value pairs of the form (X,Y) are exported (i.e., X='Y') while launching the driver and workers.
sshPublicKeys string[]
SSH public key contents that will be added to each Spark node in this cluster. The corresponding private keys can be used to login with the user name ubuntu on port 2200. You can specify up to 10 keys.
useMlRuntime boolean
Whenever ML runtime should be selected or not. Actual runtime is determined by spark_version (DBR release), this field use_ml_runtime, and whether node_type_id is GPU node or not.
workloadType ClusterWorkloadType
spark_version This property is required. str
Runtime version of the cluster. Any supported databricks.getSparkVersion id. We advise using Cluster Policies to restrict the list of versions for simplicity while maintaining enough control.
apply_policy_default_values bool
Whether to use policy default values for missing cluster attributes.
autoscale ClusterAutoscaleArgs
autotermination_minutes int
Automatically terminate the cluster after being inactive for this time in minutes. If specified, the threshold must be between 10 and 10000 minutes. You can also set this value to 0 to explicitly disable automatic termination. Defaults to 60. We highly recommend having this setting present for Interactive/BI clusters.
aws_attributes ClusterAwsAttributesArgs
azure_attributes ClusterAzureAttributesArgs
cluster_log_conf ClusterClusterLogConfArgs
cluster_mount_infos Sequence[ClusterClusterMountInfoArgs]
cluster_name str
Cluster name, which doesn’t have to be unique. If not specified at creation, the cluster name will be an empty string.
custom_tags Mapping[str, str]

should have tag ResourceClass set to value Serverless

For example:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const clusterWithTableAccessControl = new databricks.Cluster("cluster_with_table_access_control", { clusterName: "Shared High-Concurrency", sparkVersion: latestLts.id, nodeTypeId: smallest.id, autoterminationMinutes: 20, sparkConf: { "spark.databricks.repl.allowedLanguages": "python,sql", "spark.databricks.cluster.profile": "serverless", }, customTags: { ResourceClass: "Serverless", }, });

import pulumi
import pulumi_databricks as databricks

cluster_with_table_access_control = databricks.Cluster("cluster_with_table_access_control",
    cluster_name="Shared High-Concurrency",
    spark_version=latest_lts["id"],
    node_type_id=smallest["id"],
    autotermination_minutes=20,
    spark_conf={
        "spark.databricks.repl.allowedLanguages": "python,sql",
        "spark.databricks.cluster.profile": "serverless",
    },
    custom_tags={
        "ResourceClass": "Serverless",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var clusterWithTableAccessControl = new Databricks.Cluster("cluster_with_table_access_control", new()
    {
        ClusterName = "Shared High-Concurrency",
        SparkVersion = latestLts.Id,
        NodeTypeId = smallest.Id,
        AutoterminationMinutes = 20,
        SparkConf = 
        {
            { "spark.databricks.repl.allowedLanguages", "python,sql" },
            { "spark.databricks.cluster.profile", "serverless" },
        },
        CustomTags = 
        {
            { "ResourceClass", "Serverless" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := databricks.NewCluster(ctx, "cluster_with_table_access_control", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Shared High-Concurrency"),
			SparkVersion:           pulumi.Any(latestLts.Id),
			NodeTypeId:             pulumi.Any(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			SparkConf: pulumi.StringMap{
				"spark.databricks.repl.allowedLanguages": pulumi.String("python,sql"),
				"spark.databricks.cluster.profile":       pulumi.String("serverless"),
			},
			CustomTags: pulumi.StringMap{
				"ResourceClass": pulumi.String("Serverless"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var clusterWithTableAccessControl = new Cluster("clusterWithTableAccessControl", ClusterArgs.builder()
            .clusterName("Shared High-Concurrency")
            .sparkVersion(latestLts.id())
            .nodeTypeId(smallest.id())
            .autoterminationMinutes(20)
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.repl.allowedLanguages", "python,sql"),
                Map.entry("spark.databricks.cluster.profile", "serverless")
            ))
            .customTags(Map.of("ResourceClass", "Serverless"))
            .build());

    }
}
resources:
  clusterWithTableAccessControl:
    type: databricks:Cluster
    name: cluster_with_table_access_control
    properties:
      clusterName: Shared High-Concurrency
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      sparkConf:
        spark.databricks.repl.allowedLanguages: python,sql
        spark.databricks.cluster.profile: serverless
      customTags:
        ResourceClass: Serverless
data_security_mode str
Select the security features of the cluster (see API docs for full list of values). Unity Catalog requires SINGLE_USER or USER_ISOLATION mode. LEGACY_PASSTHROUGH for passthrough cluster and LEGACY_TABLE_ACL for Table ACL cluster. If omitted, default security features are enabled. To disable security features use NONE or legacy mode NO_ISOLATION. If kind is specified, then the following options are available:

  • DATA_SECURITY_MODE_AUTO: Databricks will choose the most appropriate access mode depending on your compute configuration.
  • DATA_SECURITY_MODE_STANDARD: Alias for USER_ISOLATION.
  • DATA_SECURITY_MODE_DEDICATED: Alias for SINGLE_USER.
docker_image ClusterDockerImageArgs
driver_instance_pool_id str
similar to instance_pool_id, but for driver node. If omitted, and instance_pool_id is specified, then the driver will be allocated from that pool.
driver_node_type_id str
The node type of the Spark driver. This field is optional; if unset, API will set the driver node type to the same value as node_type_id defined above.
enable_elastic_disk bool
If you don’t want to allocate a fixed number of EBS volumes at cluster creation time, use autoscaling local storage. With autoscaling local storage, Databricks monitors the amount of free disk space available on your cluster’s Spark workers. If a worker begins to run too low on disk, Databricks automatically attaches a new EBS volume to the worker before it runs out of disk space. EBS volumes are attached up to a limit of 5 TB of total disk space per instance (including the instance’s local storage). To scale down EBS usage, make sure you have autotermination_minutes and autoscale attributes set. More documentation available at cluster configuration page.
enable_local_disk_encryption bool
Some instance types you use to run clusters may have locally attached disks. Databricks may store shuffle data or temporary data on these locally attached disks. To ensure that all data at rest is encrypted for all storage types, including shuffle data stored temporarily on your cluster’s local disks, you can enable local disk encryption. When local disk encryption is enabled, Databricks generates an encryption key locally unique to each cluster node and uses it to encrypt all data stored on local disks. The scope of the key is local to each cluster node and is destroyed along with the cluster node itself. During its lifetime, the key resides in memory for encryption and decryption and is stored encrypted on the disk. Your workloads may run more slowly because of the performance impact of reading and writing encrypted data to and from local volumes. This feature is not available for all Azure Databricks subscriptions. Contact your Microsoft or Databricks account representative to request access.
gcp_attributes ClusterGcpAttributesArgs
idempotency_token Changes to this property will trigger replacement. str
An optional token to guarantee the idempotency of cluster creation requests. If an active cluster with the provided token already exists, the request will not create a new cluster, but it will return the existing running cluster's ID instead. If you specify the idempotency token, upon failure, you can retry until the request succeeds. Databricks platform guarantees to launch exactly one cluster with that idempotency token. This token should have at most 64 characters.
init_scripts Sequence[ClusterInitScriptArgs]
instance_pool_id str
To reduce cluster start time, you can attach a cluster to a predefined pool of idle instances. When attached to a pool, a cluster allocates its driver and worker nodes from the pool. If the pool does not have sufficient idle resources to accommodate the cluster’s request, it expands by allocating new instances from the instance provider. When an attached cluster changes its state to TERMINATED, the instances it used are returned to the pool and reused by a different cluster.
is_pinned bool
boolean value specifying if the cluster is pinned (not pinned by default). You must be a Databricks administrator to use this. The pinned clusters' maximum number is limited to 100, so apply may fail if you have more than that (this number may change over time, so check Databricks documentation for actual number).
is_single_node bool
When set to true, Databricks will automatically set single node related custom_tags, spark_conf, and num_workers.
kind str
The kind of compute described by this compute specification. Possible values (see API docs for full list): CLASSIC_PREVIEW (if corresponding public preview is enabled).
libraries Sequence[ClusterLibraryArgs]
no_wait bool

If true, the provider will not wait for the cluster to reach RUNNING state when creating the cluster, allowing cluster creation and library installation to continue asynchronously. Defaults to false (the provider will wait for cluster creation and library installation to succeed).

The following example demonstrates how to create an autoscaling cluster with Delta Cache enabled:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const smallest = databricks.getNodeType({ localDisk: true, }); const latestLts = databricks.getSparkVersion({ longTermSupport: true, }); const sharedAutoscaling = new databricks.Cluster("shared_autoscaling", { clusterName: "Shared Autoscaling", sparkVersion: latestLts.then(latestLts => latestLts.id), nodeTypeId: smallest.then(smallest => smallest.id), autoterminationMinutes: 20, autoscale: { minWorkers: 1, maxWorkers: 50, }, sparkConf: { "spark.databricks.io.cache.enabled": "true", "spark.databricks.io.cache.maxDiskUsage": "50g", "spark.databricks.io.cache.maxMetaDataCache": "1g", }, });

import pulumi
import pulumi_databricks as databricks

smallest = databricks.get_node_type(local_disk=True)
latest_lts = databricks.get_spark_version(long_term_support=True)
shared_autoscaling = databricks.Cluster("shared_autoscaling",
    cluster_name="Shared Autoscaling",
    spark_version=latest_lts.id,
    node_type_id=smallest.id,
    autotermination_minutes=20,
    autoscale={
        "min_workers": 1,
        "max_workers": 50,
    },
    spark_conf={
        "spark.databricks.io.cache.enabled": "true",
        "spark.databricks.io.cache.maxDiskUsage": "50g",
        "spark.databricks.io.cache.maxMetaDataCache": "1g",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var smallest = Databricks.GetNodeType.Invoke(new()
    {
        LocalDisk = true,
    });

    var latestLts = Databricks.GetSparkVersion.Invoke(new()
    {
        LongTermSupport = true,
    });

    var sharedAutoscaling = new Databricks.Cluster("shared_autoscaling", new()
    {
        ClusterName = "Shared Autoscaling",
        SparkVersion = latestLts.Apply(getSparkVersionResult => getSparkVersionResult.Id),
        NodeTypeId = smallest.Apply(getNodeTypeResult => getNodeTypeResult.Id),
        AutoterminationMinutes = 20,
        Autoscale = new Databricks.Inputs.ClusterAutoscaleArgs
        {
            MinWorkers = 1,
            MaxWorkers = 50,
        },
        SparkConf = 
        {
            { "spark.databricks.io.cache.enabled", "true" },
            { "spark.databricks.io.cache.maxDiskUsage", "50g" },
            { "spark.databricks.io.cache.maxMetaDataCache", "1g" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		smallest, err := databricks.GetNodeType(ctx, &databricks.GetNodeTypeArgs{
			LocalDisk: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		latestLts, err := databricks.GetSparkVersion(ctx, &databricks.GetSparkVersionArgs{
			LongTermSupport: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		_, err = databricks.NewCluster(ctx, "shared_autoscaling", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Shared Autoscaling"),
			SparkVersion:           pulumi.String(latestLts.Id),
			NodeTypeId:             pulumi.String(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			Autoscale: &databricks.ClusterAutoscaleArgs{
				MinWorkers: pulumi.Int(1),
				MaxWorkers: pulumi.Int(50),
			},
			SparkConf: pulumi.StringMap{
				"spark.databricks.io.cache.enabled":          pulumi.String("true"),
				"spark.databricks.io.cache.maxDiskUsage":     pulumi.String("50g"),
				"spark.databricks.io.cache.maxMetaDataCache": pulumi.String("1g"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.DatabricksFunctions;
import com.pulumi.databricks.inputs.GetNodeTypeArgs;
import com.pulumi.databricks.inputs.GetSparkVersionArgs;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterAutoscaleArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        final var smallest = DatabricksFunctions.getNodeType(GetNodeTypeArgs.builder()
            .localDisk(true)
            .build());

        final var latestLts = DatabricksFunctions.getSparkVersion(GetSparkVersionArgs.builder()
            .longTermSupport(true)
            .build());

        var sharedAutoscaling = new Cluster("sharedAutoscaling", ClusterArgs.builder()
            .clusterName("Shared Autoscaling")
            .sparkVersion(latestLts.applyValue(getSparkVersionResult -> getSparkVersionResult.id()))
            .nodeTypeId(smallest.applyValue(getNodeTypeResult -> getNodeTypeResult.id()))
            .autoterminationMinutes(20)
            .autoscale(ClusterAutoscaleArgs.builder()
                .minWorkers(1)
                .maxWorkers(50)
                .build())
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.io.cache.enabled", true),
                Map.entry("spark.databricks.io.cache.maxDiskUsage", "50g"),
                Map.entry("spark.databricks.io.cache.maxMetaDataCache", "1g")
            ))
            .build());

    }
}
resources:
  sharedAutoscaling:
    type: databricks:Cluster
    name: shared_autoscaling
    properties:
      clusterName: Shared Autoscaling
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      autoscale:
        minWorkers: 1
        maxWorkers: 50
      sparkConf:
        spark.databricks.io.cache.enabled: true
        spark.databricks.io.cache.maxDiskUsage: 50g
        spark.databricks.io.cache.maxMetaDataCache: 1g
variables:
  smallest:
    fn::invoke:
      function: databricks:getNodeType
      arguments:
        localDisk: true
  latestLts:
    fn::invoke:
      function: databricks:getSparkVersion
      arguments:
        longTermSupport: true
node_type_id str
Any supported databricks.getNodeType id. If instance_pool_id is specified, this field is not needed.
num_workers int
Number of worker nodes that this cluster should have. A cluster has one Spark driver and num_workers executors for a total of num_workers + 1 Spark nodes.
policy_id str
Identifier of Cluster Policy to validate cluster and preset certain defaults. The primary use for cluster policies is to allow users to create policy-scoped clusters via UI rather than sharing configuration for API-created clusters. For example, when you specify policy_id of external metastore policy, you still have to fill in relevant keys for spark_conf. If relevant fields aren't filled in, then it will cause the configuration drift detected on each plan/apply, and Pulumi will try to apply the detected changes.
runtime_engine str
The type of runtime engine to use. If not specified, the runtime engine type is inferred based on the spark_version value. Allowed values include: PHOTON, STANDARD.
single_user_name str
The optional user name of the user (or group name if kind if specified) to assign to an interactive cluster. This field is required when using data_security_mode set to SINGLE_USER or AAD Passthrough for Azure Data Lake Storage (ADLS) with a single-user cluster (i.e., not high-concurrency clusters).
spark_conf Mapping[str, str]
should have following items:

  • spark.databricks.repl.allowedLanguages set to a list of supported languages, for example: python,sql, or python,sql,r. Scala is not supported!
  • spark.databricks.cluster.profile set to serverless
spark_env_vars Mapping[str, str]
Map with environment variable key-value pairs to fine-tune Spark clusters. Key-value pairs of the form (X,Y) are exported (i.e., X='Y') while launching the driver and workers.
ssh_public_keys Sequence[str]
SSH public key contents that will be added to each Spark node in this cluster. The corresponding private keys can be used to login with the user name ubuntu on port 2200. You can specify up to 10 keys.
use_ml_runtime bool
Whenever ML runtime should be selected or not. Actual runtime is determined by spark_version (DBR release), this field use_ml_runtime, and whether node_type_id is GPU node or not.
workload_type ClusterWorkloadTypeArgs
sparkVersion This property is required. String
Runtime version of the cluster. Any supported databricks.getSparkVersion id. We advise using Cluster Policies to restrict the list of versions for simplicity while maintaining enough control.
applyPolicyDefaultValues Boolean
Whether to use policy default values for missing cluster attributes.
autoscale Property Map
autoterminationMinutes Number
Automatically terminate the cluster after being inactive for this time in minutes. If specified, the threshold must be between 10 and 10000 minutes. You can also set this value to 0 to explicitly disable automatic termination. Defaults to 60. We highly recommend having this setting present for Interactive/BI clusters.
awsAttributes Property Map
azureAttributes Property Map
clusterLogConf Property Map
clusterMountInfos List<Property Map>
clusterName String
Cluster name, which doesn’t have to be unique. If not specified at creation, the cluster name will be an empty string.
customTags Map<String>

should have tag ResourceClass set to value Serverless

For example:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const clusterWithTableAccessControl = new databricks.Cluster("cluster_with_table_access_control", { clusterName: "Shared High-Concurrency", sparkVersion: latestLts.id, nodeTypeId: smallest.id, autoterminationMinutes: 20, sparkConf: { "spark.databricks.repl.allowedLanguages": "python,sql", "spark.databricks.cluster.profile": "serverless", }, customTags: { ResourceClass: "Serverless", }, });

import pulumi
import pulumi_databricks as databricks

cluster_with_table_access_control = databricks.Cluster("cluster_with_table_access_control",
    cluster_name="Shared High-Concurrency",
    spark_version=latest_lts["id"],
    node_type_id=smallest["id"],
    autotermination_minutes=20,
    spark_conf={
        "spark.databricks.repl.allowedLanguages": "python,sql",
        "spark.databricks.cluster.profile": "serverless",
    },
    custom_tags={
        "ResourceClass": "Serverless",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var clusterWithTableAccessControl = new Databricks.Cluster("cluster_with_table_access_control", new()
    {
        ClusterName = "Shared High-Concurrency",
        SparkVersion = latestLts.Id,
        NodeTypeId = smallest.Id,
        AutoterminationMinutes = 20,
        SparkConf = 
        {
            { "spark.databricks.repl.allowedLanguages", "python,sql" },
            { "spark.databricks.cluster.profile", "serverless" },
        },
        CustomTags = 
        {
            { "ResourceClass", "Serverless" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := databricks.NewCluster(ctx, "cluster_with_table_access_control", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Shared High-Concurrency"),
			SparkVersion:           pulumi.Any(latestLts.Id),
			NodeTypeId:             pulumi.Any(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			SparkConf: pulumi.StringMap{
				"spark.databricks.repl.allowedLanguages": pulumi.String("python,sql"),
				"spark.databricks.cluster.profile":       pulumi.String("serverless"),
			},
			CustomTags: pulumi.StringMap{
				"ResourceClass": pulumi.String("Serverless"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var clusterWithTableAccessControl = new Cluster("clusterWithTableAccessControl", ClusterArgs.builder()
            .clusterName("Shared High-Concurrency")
            .sparkVersion(latestLts.id())
            .nodeTypeId(smallest.id())
            .autoterminationMinutes(20)
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.repl.allowedLanguages", "python,sql"),
                Map.entry("spark.databricks.cluster.profile", "serverless")
            ))
            .customTags(Map.of("ResourceClass", "Serverless"))
            .build());

    }
}
resources:
  clusterWithTableAccessControl:
    type: databricks:Cluster
    name: cluster_with_table_access_control
    properties:
      clusterName: Shared High-Concurrency
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      sparkConf:
        spark.databricks.repl.allowedLanguages: python,sql
        spark.databricks.cluster.profile: serverless
      customTags:
        ResourceClass: Serverless
dataSecurityMode String
Select the security features of the cluster (see API docs for full list of values). Unity Catalog requires SINGLE_USER or USER_ISOLATION mode. LEGACY_PASSTHROUGH for passthrough cluster and LEGACY_TABLE_ACL for Table ACL cluster. If omitted, default security features are enabled. To disable security features use NONE or legacy mode NO_ISOLATION. If kind is specified, then the following options are available:

  • DATA_SECURITY_MODE_AUTO: Databricks will choose the most appropriate access mode depending on your compute configuration.
  • DATA_SECURITY_MODE_STANDARD: Alias for USER_ISOLATION.
  • DATA_SECURITY_MODE_DEDICATED: Alias for SINGLE_USER.
dockerImage Property Map
driverInstancePoolId String
similar to instance_pool_id, but for driver node. If omitted, and instance_pool_id is specified, then the driver will be allocated from that pool.
driverNodeTypeId String
The node type of the Spark driver. This field is optional; if unset, API will set the driver node type to the same value as node_type_id defined above.
enableElasticDisk Boolean
If you don’t want to allocate a fixed number of EBS volumes at cluster creation time, use autoscaling local storage. With autoscaling local storage, Databricks monitors the amount of free disk space available on your cluster’s Spark workers. If a worker begins to run too low on disk, Databricks automatically attaches a new EBS volume to the worker before it runs out of disk space. EBS volumes are attached up to a limit of 5 TB of total disk space per instance (including the instance’s local storage). To scale down EBS usage, make sure you have autotermination_minutes and autoscale attributes set. More documentation available at cluster configuration page.
enableLocalDiskEncryption Boolean
Some instance types you use to run clusters may have locally attached disks. Databricks may store shuffle data or temporary data on these locally attached disks. To ensure that all data at rest is encrypted for all storage types, including shuffle data stored temporarily on your cluster’s local disks, you can enable local disk encryption. When local disk encryption is enabled, Databricks generates an encryption key locally unique to each cluster node and uses it to encrypt all data stored on local disks. The scope of the key is local to each cluster node and is destroyed along with the cluster node itself. During its lifetime, the key resides in memory for encryption and decryption and is stored encrypted on the disk. Your workloads may run more slowly because of the performance impact of reading and writing encrypted data to and from local volumes. This feature is not available for all Azure Databricks subscriptions. Contact your Microsoft or Databricks account representative to request access.
gcpAttributes Property Map
idempotencyToken Changes to this property will trigger replacement. String
An optional token to guarantee the idempotency of cluster creation requests. If an active cluster with the provided token already exists, the request will not create a new cluster, but it will return the existing running cluster's ID instead. If you specify the idempotency token, upon failure, you can retry until the request succeeds. Databricks platform guarantees to launch exactly one cluster with that idempotency token. This token should have at most 64 characters.
initScripts List<Property Map>
instancePoolId String
To reduce cluster start time, you can attach a cluster to a predefined pool of idle instances. When attached to a pool, a cluster allocates its driver and worker nodes from the pool. If the pool does not have sufficient idle resources to accommodate the cluster’s request, it expands by allocating new instances from the instance provider. When an attached cluster changes its state to TERMINATED, the instances it used are returned to the pool and reused by a different cluster.
isPinned Boolean
boolean value specifying if the cluster is pinned (not pinned by default). You must be a Databricks administrator to use this. The pinned clusters' maximum number is limited to 100, so apply may fail if you have more than that (this number may change over time, so check Databricks documentation for actual number).
isSingleNode Boolean
When set to true, Databricks will automatically set single node related custom_tags, spark_conf, and num_workers.
kind String
The kind of compute described by this compute specification. Possible values (see API docs for full list): CLASSIC_PREVIEW (if corresponding public preview is enabled).
libraries List<Property Map>
noWait Boolean

If true, the provider will not wait for the cluster to reach RUNNING state when creating the cluster, allowing cluster creation and library installation to continue asynchronously. Defaults to false (the provider will wait for cluster creation and library installation to succeed).

The following example demonstrates how to create an autoscaling cluster with Delta Cache enabled:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const smallest = databricks.getNodeType({ localDisk: true, }); const latestLts = databricks.getSparkVersion({ longTermSupport: true, }); const sharedAutoscaling = new databricks.Cluster("shared_autoscaling", { clusterName: "Shared Autoscaling", sparkVersion: latestLts.then(latestLts => latestLts.id), nodeTypeId: smallest.then(smallest => smallest.id), autoterminationMinutes: 20, autoscale: { minWorkers: 1, maxWorkers: 50, }, sparkConf: { "spark.databricks.io.cache.enabled": "true", "spark.databricks.io.cache.maxDiskUsage": "50g", "spark.databricks.io.cache.maxMetaDataCache": "1g", }, });

import pulumi
import pulumi_databricks as databricks

smallest = databricks.get_node_type(local_disk=True)
latest_lts = databricks.get_spark_version(long_term_support=True)
shared_autoscaling = databricks.Cluster("shared_autoscaling",
    cluster_name="Shared Autoscaling",
    spark_version=latest_lts.id,
    node_type_id=smallest.id,
    autotermination_minutes=20,
    autoscale={
        "min_workers": 1,
        "max_workers": 50,
    },
    spark_conf={
        "spark.databricks.io.cache.enabled": "true",
        "spark.databricks.io.cache.maxDiskUsage": "50g",
        "spark.databricks.io.cache.maxMetaDataCache": "1g",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var smallest = Databricks.GetNodeType.Invoke(new()
    {
        LocalDisk = true,
    });

    var latestLts = Databricks.GetSparkVersion.Invoke(new()
    {
        LongTermSupport = true,
    });

    var sharedAutoscaling = new Databricks.Cluster("shared_autoscaling", new()
    {
        ClusterName = "Shared Autoscaling",
        SparkVersion = latestLts.Apply(getSparkVersionResult => getSparkVersionResult.Id),
        NodeTypeId = smallest.Apply(getNodeTypeResult => getNodeTypeResult.Id),
        AutoterminationMinutes = 20,
        Autoscale = new Databricks.Inputs.ClusterAutoscaleArgs
        {
            MinWorkers = 1,
            MaxWorkers = 50,
        },
        SparkConf = 
        {
            { "spark.databricks.io.cache.enabled", "true" },
            { "spark.databricks.io.cache.maxDiskUsage", "50g" },
            { "spark.databricks.io.cache.maxMetaDataCache", "1g" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		smallest, err := databricks.GetNodeType(ctx, &databricks.GetNodeTypeArgs{
			LocalDisk: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		latestLts, err := databricks.GetSparkVersion(ctx, &databricks.GetSparkVersionArgs{
			LongTermSupport: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		_, err = databricks.NewCluster(ctx, "shared_autoscaling", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Shared Autoscaling"),
			SparkVersion:           pulumi.String(latestLts.Id),
			NodeTypeId:             pulumi.String(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			Autoscale: &databricks.ClusterAutoscaleArgs{
				MinWorkers: pulumi.Int(1),
				MaxWorkers: pulumi.Int(50),
			},
			SparkConf: pulumi.StringMap{
				"spark.databricks.io.cache.enabled":          pulumi.String("true"),
				"spark.databricks.io.cache.maxDiskUsage":     pulumi.String("50g"),
				"spark.databricks.io.cache.maxMetaDataCache": pulumi.String("1g"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.DatabricksFunctions;
import com.pulumi.databricks.inputs.GetNodeTypeArgs;
import com.pulumi.databricks.inputs.GetSparkVersionArgs;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterAutoscaleArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        final var smallest = DatabricksFunctions.getNodeType(GetNodeTypeArgs.builder()
            .localDisk(true)
            .build());

        final var latestLts = DatabricksFunctions.getSparkVersion(GetSparkVersionArgs.builder()
            .longTermSupport(true)
            .build());

        var sharedAutoscaling = new Cluster("sharedAutoscaling", ClusterArgs.builder()
            .clusterName("Shared Autoscaling")
            .sparkVersion(latestLts.applyValue(getSparkVersionResult -> getSparkVersionResult.id()))
            .nodeTypeId(smallest.applyValue(getNodeTypeResult -> getNodeTypeResult.id()))
            .autoterminationMinutes(20)
            .autoscale(ClusterAutoscaleArgs.builder()
                .minWorkers(1)
                .maxWorkers(50)
                .build())
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.io.cache.enabled", true),
                Map.entry("spark.databricks.io.cache.maxDiskUsage", "50g"),
                Map.entry("spark.databricks.io.cache.maxMetaDataCache", "1g")
            ))
            .build());

    }
}
resources:
  sharedAutoscaling:
    type: databricks:Cluster
    name: shared_autoscaling
    properties:
      clusterName: Shared Autoscaling
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      autoscale:
        minWorkers: 1
        maxWorkers: 50
      sparkConf:
        spark.databricks.io.cache.enabled: true
        spark.databricks.io.cache.maxDiskUsage: 50g
        spark.databricks.io.cache.maxMetaDataCache: 1g
variables:
  smallest:
    fn::invoke:
      function: databricks:getNodeType
      arguments:
        localDisk: true
  latestLts:
    fn::invoke:
      function: databricks:getSparkVersion
      arguments:
        longTermSupport: true
nodeTypeId String
Any supported databricks.getNodeType id. If instance_pool_id is specified, this field is not needed.
numWorkers Number
Number of worker nodes that this cluster should have. A cluster has one Spark driver and num_workers executors for a total of num_workers + 1 Spark nodes.
policyId String
Identifier of Cluster Policy to validate cluster and preset certain defaults. The primary use for cluster policies is to allow users to create policy-scoped clusters via UI rather than sharing configuration for API-created clusters. For example, when you specify policy_id of external metastore policy, you still have to fill in relevant keys for spark_conf. If relevant fields aren't filled in, then it will cause the configuration drift detected on each plan/apply, and Pulumi will try to apply the detected changes.
runtimeEngine String
The type of runtime engine to use. If not specified, the runtime engine type is inferred based on the spark_version value. Allowed values include: PHOTON, STANDARD.
singleUserName String
The optional user name of the user (or group name if kind if specified) to assign to an interactive cluster. This field is required when using data_security_mode set to SINGLE_USER or AAD Passthrough for Azure Data Lake Storage (ADLS) with a single-user cluster (i.e., not high-concurrency clusters).
sparkConf Map<String>
should have following items:

  • spark.databricks.repl.allowedLanguages set to a list of supported languages, for example: python,sql, or python,sql,r. Scala is not supported!
  • spark.databricks.cluster.profile set to serverless
sparkEnvVars Map<String>
Map with environment variable key-value pairs to fine-tune Spark clusters. Key-value pairs of the form (X,Y) are exported (i.e., X='Y') while launching the driver and workers.
sshPublicKeys List<String>
SSH public key contents that will be added to each Spark node in this cluster. The corresponding private keys can be used to login with the user name ubuntu on port 2200. You can specify up to 10 keys.
useMlRuntime Boolean
Whenever ML runtime should be selected or not. Actual runtime is determined by spark_version (DBR release), this field use_ml_runtime, and whether node_type_id is GPU node or not.
workloadType Property Map

Outputs

All input properties are implicitly available as output properties. Additionally, the Cluster resource produces the following output properties:

ClusterId string
DefaultTags Dictionary<string, string>
(map) Tags that are added by Databricks by default, regardless of any custom_tags that may have been added. These include: Vendor: Databricks, Creator: <username_of_creator>, ClusterName: <name_of_cluster>, ClusterId: <id_of_cluster>, Name: , and any workspace and pool tags.
Id string
The provider-assigned unique ID for this managed resource.
State string
(string) State of the cluster.
Url string
ClusterId string
DefaultTags map[string]string
(map) Tags that are added by Databricks by default, regardless of any custom_tags that may have been added. These include: Vendor: Databricks, Creator: <username_of_creator>, ClusterName: <name_of_cluster>, ClusterId: <id_of_cluster>, Name: , and any workspace and pool tags.
Id string
The provider-assigned unique ID for this managed resource.
State string
(string) State of the cluster.
Url string
clusterId String
defaultTags Map<String,String>
(map) Tags that are added by Databricks by default, regardless of any custom_tags that may have been added. These include: Vendor: Databricks, Creator: <username_of_creator>, ClusterName: <name_of_cluster>, ClusterId: <id_of_cluster>, Name: , and any workspace and pool tags.
id String
The provider-assigned unique ID for this managed resource.
state String
(string) State of the cluster.
url String
clusterId string
defaultTags {[key: string]: string}
(map) Tags that are added by Databricks by default, regardless of any custom_tags that may have been added. These include: Vendor: Databricks, Creator: <username_of_creator>, ClusterName: <name_of_cluster>, ClusterId: <id_of_cluster>, Name: , and any workspace and pool tags.
id string
The provider-assigned unique ID for this managed resource.
state string
(string) State of the cluster.
url string
cluster_id str
default_tags Mapping[str, str]
(map) Tags that are added by Databricks by default, regardless of any custom_tags that may have been added. These include: Vendor: Databricks, Creator: <username_of_creator>, ClusterName: <name_of_cluster>, ClusterId: <id_of_cluster>, Name: , and any workspace and pool tags.
id str
The provider-assigned unique ID for this managed resource.
state str
(string) State of the cluster.
url str
clusterId String
defaultTags Map<String>
(map) Tags that are added by Databricks by default, regardless of any custom_tags that may have been added. These include: Vendor: Databricks, Creator: <username_of_creator>, ClusterName: <name_of_cluster>, ClusterId: <id_of_cluster>, Name: , and any workspace and pool tags.
id String
The provider-assigned unique ID for this managed resource.
state String
(string) State of the cluster.
url String

Look up Existing Cluster Resource

Get an existing Cluster resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

public static get(name: string, id: Input<ID>, state?: ClusterState, opts?: CustomResourceOptions): Cluster
@staticmethod
def get(resource_name: str,
        id: str,
        opts: Optional[ResourceOptions] = None,
        apply_policy_default_values: Optional[bool] = None,
        autoscale: Optional[ClusterAutoscaleArgs] = None,
        autotermination_minutes: Optional[int] = None,
        aws_attributes: Optional[ClusterAwsAttributesArgs] = None,
        azure_attributes: Optional[ClusterAzureAttributesArgs] = None,
        cluster_id: Optional[str] = None,
        cluster_log_conf: Optional[ClusterClusterLogConfArgs] = None,
        cluster_mount_infos: Optional[Sequence[ClusterClusterMountInfoArgs]] = None,
        cluster_name: Optional[str] = None,
        custom_tags: Optional[Mapping[str, str]] = None,
        data_security_mode: Optional[str] = None,
        default_tags: Optional[Mapping[str, str]] = None,
        docker_image: Optional[ClusterDockerImageArgs] = None,
        driver_instance_pool_id: Optional[str] = None,
        driver_node_type_id: Optional[str] = None,
        enable_elastic_disk: Optional[bool] = None,
        enable_local_disk_encryption: Optional[bool] = None,
        gcp_attributes: Optional[ClusterGcpAttributesArgs] = None,
        idempotency_token: Optional[str] = None,
        init_scripts: Optional[Sequence[ClusterInitScriptArgs]] = None,
        instance_pool_id: Optional[str] = None,
        is_pinned: Optional[bool] = None,
        is_single_node: Optional[bool] = None,
        kind: Optional[str] = None,
        libraries: Optional[Sequence[ClusterLibraryArgs]] = None,
        no_wait: Optional[bool] = None,
        node_type_id: Optional[str] = None,
        num_workers: Optional[int] = None,
        policy_id: Optional[str] = None,
        runtime_engine: Optional[str] = None,
        single_user_name: Optional[str] = None,
        spark_conf: Optional[Mapping[str, str]] = None,
        spark_env_vars: Optional[Mapping[str, str]] = None,
        spark_version: Optional[str] = None,
        ssh_public_keys: Optional[Sequence[str]] = None,
        state: Optional[str] = None,
        url: Optional[str] = None,
        use_ml_runtime: Optional[bool] = None,
        workload_type: Optional[ClusterWorkloadTypeArgs] = None) -> Cluster
func GetCluster(ctx *Context, name string, id IDInput, state *ClusterState, opts ...ResourceOption) (*Cluster, error)
public static Cluster Get(string name, Input<string> id, ClusterState? state, CustomResourceOptions? opts = null)
public static Cluster get(String name, Output<String> id, ClusterState state, CustomResourceOptions options)
resources:  _:    type: databricks:Cluster    get:      id: ${id}
name This property is required.
The unique name of the resulting resource.
id This property is required.
The unique provider ID of the resource to lookup.
state
Any extra arguments used during the lookup.
opts
A bag of options that control this resource's behavior.
resource_name This property is required.
The unique name of the resulting resource.
id This property is required.
The unique provider ID of the resource to lookup.
name This property is required.
The unique name of the resulting resource.
id This property is required.
The unique provider ID of the resource to lookup.
state
Any extra arguments used during the lookup.
opts
A bag of options that control this resource's behavior.
name This property is required.
The unique name of the resulting resource.
id This property is required.
The unique provider ID of the resource to lookup.
state
Any extra arguments used during the lookup.
opts
A bag of options that control this resource's behavior.
name This property is required.
The unique name of the resulting resource.
id This property is required.
The unique provider ID of the resource to lookup.
state
Any extra arguments used during the lookup.
opts
A bag of options that control this resource's behavior.
The following state arguments are supported:
ApplyPolicyDefaultValues bool
Whether to use policy default values for missing cluster attributes.
Autoscale ClusterAutoscale
AutoterminationMinutes int
Automatically terminate the cluster after being inactive for this time in minutes. If specified, the threshold must be between 10 and 10000 minutes. You can also set this value to 0 to explicitly disable automatic termination. Defaults to 60. We highly recommend having this setting present for Interactive/BI clusters.
AwsAttributes ClusterAwsAttributes
AzureAttributes ClusterAzureAttributes
ClusterId string
ClusterLogConf ClusterClusterLogConf
ClusterMountInfos List<ClusterClusterMountInfo>
ClusterName string
Cluster name, which doesn’t have to be unique. If not specified at creation, the cluster name will be an empty string.
CustomTags Dictionary<string, string>

should have tag ResourceClass set to value Serverless

For example:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const clusterWithTableAccessControl = new databricks.Cluster("cluster_with_table_access_control", { clusterName: "Shared High-Concurrency", sparkVersion: latestLts.id, nodeTypeId: smallest.id, autoterminationMinutes: 20, sparkConf: { "spark.databricks.repl.allowedLanguages": "python,sql", "spark.databricks.cluster.profile": "serverless", }, customTags: { ResourceClass: "Serverless", }, });

import pulumi
import pulumi_databricks as databricks

cluster_with_table_access_control = databricks.Cluster("cluster_with_table_access_control",
    cluster_name="Shared High-Concurrency",
    spark_version=latest_lts["id"],
    node_type_id=smallest["id"],
    autotermination_minutes=20,
    spark_conf={
        "spark.databricks.repl.allowedLanguages": "python,sql",
        "spark.databricks.cluster.profile": "serverless",
    },
    custom_tags={
        "ResourceClass": "Serverless",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var clusterWithTableAccessControl = new Databricks.Cluster("cluster_with_table_access_control", new()
    {
        ClusterName = "Shared High-Concurrency",
        SparkVersion = latestLts.Id,
        NodeTypeId = smallest.Id,
        AutoterminationMinutes = 20,
        SparkConf = 
        {
            { "spark.databricks.repl.allowedLanguages", "python,sql" },
            { "spark.databricks.cluster.profile", "serverless" },
        },
        CustomTags = 
        {
            { "ResourceClass", "Serverless" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := databricks.NewCluster(ctx, "cluster_with_table_access_control", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Shared High-Concurrency"),
			SparkVersion:           pulumi.Any(latestLts.Id),
			NodeTypeId:             pulumi.Any(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			SparkConf: pulumi.StringMap{
				"spark.databricks.repl.allowedLanguages": pulumi.String("python,sql"),
				"spark.databricks.cluster.profile":       pulumi.String("serverless"),
			},
			CustomTags: pulumi.StringMap{
				"ResourceClass": pulumi.String("Serverless"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var clusterWithTableAccessControl = new Cluster("clusterWithTableAccessControl", ClusterArgs.builder()
            .clusterName("Shared High-Concurrency")
            .sparkVersion(latestLts.id())
            .nodeTypeId(smallest.id())
            .autoterminationMinutes(20)
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.repl.allowedLanguages", "python,sql"),
                Map.entry("spark.databricks.cluster.profile", "serverless")
            ))
            .customTags(Map.of("ResourceClass", "Serverless"))
            .build());

    }
}
resources:
  clusterWithTableAccessControl:
    type: databricks:Cluster
    name: cluster_with_table_access_control
    properties:
      clusterName: Shared High-Concurrency
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      sparkConf:
        spark.databricks.repl.allowedLanguages: python,sql
        spark.databricks.cluster.profile: serverless
      customTags:
        ResourceClass: Serverless
DataSecurityMode string
Select the security features of the cluster (see API docs for full list of values). Unity Catalog requires SINGLE_USER or USER_ISOLATION mode. LEGACY_PASSTHROUGH for passthrough cluster and LEGACY_TABLE_ACL for Table ACL cluster. If omitted, default security features are enabled. To disable security features use NONE or legacy mode NO_ISOLATION. If kind is specified, then the following options are available:

  • DATA_SECURITY_MODE_AUTO: Databricks will choose the most appropriate access mode depending on your compute configuration.
  • DATA_SECURITY_MODE_STANDARD: Alias for USER_ISOLATION.
  • DATA_SECURITY_MODE_DEDICATED: Alias for SINGLE_USER.
DefaultTags Dictionary<string, string>
(map) Tags that are added by Databricks by default, regardless of any custom_tags that may have been added. These include: Vendor: Databricks, Creator: <username_of_creator>, ClusterName: <name_of_cluster>, ClusterId: <id_of_cluster>, Name: , and any workspace and pool tags.
DockerImage ClusterDockerImage
DriverInstancePoolId string
similar to instance_pool_id, but for driver node. If omitted, and instance_pool_id is specified, then the driver will be allocated from that pool.
DriverNodeTypeId string
The node type of the Spark driver. This field is optional; if unset, API will set the driver node type to the same value as node_type_id defined above.
EnableElasticDisk bool
If you don’t want to allocate a fixed number of EBS volumes at cluster creation time, use autoscaling local storage. With autoscaling local storage, Databricks monitors the amount of free disk space available on your cluster’s Spark workers. If a worker begins to run too low on disk, Databricks automatically attaches a new EBS volume to the worker before it runs out of disk space. EBS volumes are attached up to a limit of 5 TB of total disk space per instance (including the instance’s local storage). To scale down EBS usage, make sure you have autotermination_minutes and autoscale attributes set. More documentation available at cluster configuration page.
EnableLocalDiskEncryption bool
Some instance types you use to run clusters may have locally attached disks. Databricks may store shuffle data or temporary data on these locally attached disks. To ensure that all data at rest is encrypted for all storage types, including shuffle data stored temporarily on your cluster’s local disks, you can enable local disk encryption. When local disk encryption is enabled, Databricks generates an encryption key locally unique to each cluster node and uses it to encrypt all data stored on local disks. The scope of the key is local to each cluster node and is destroyed along with the cluster node itself. During its lifetime, the key resides in memory for encryption and decryption and is stored encrypted on the disk. Your workloads may run more slowly because of the performance impact of reading and writing encrypted data to and from local volumes. This feature is not available for all Azure Databricks subscriptions. Contact your Microsoft or Databricks account representative to request access.
GcpAttributes ClusterGcpAttributes
IdempotencyToken Changes to this property will trigger replacement. string
An optional token to guarantee the idempotency of cluster creation requests. If an active cluster with the provided token already exists, the request will not create a new cluster, but it will return the existing running cluster's ID instead. If you specify the idempotency token, upon failure, you can retry until the request succeeds. Databricks platform guarantees to launch exactly one cluster with that idempotency token. This token should have at most 64 characters.
InitScripts List<ClusterInitScript>
InstancePoolId string
To reduce cluster start time, you can attach a cluster to a predefined pool of idle instances. When attached to a pool, a cluster allocates its driver and worker nodes from the pool. If the pool does not have sufficient idle resources to accommodate the cluster’s request, it expands by allocating new instances from the instance provider. When an attached cluster changes its state to TERMINATED, the instances it used are returned to the pool and reused by a different cluster.
IsPinned bool
boolean value specifying if the cluster is pinned (not pinned by default). You must be a Databricks administrator to use this. The pinned clusters' maximum number is limited to 100, so apply may fail if you have more than that (this number may change over time, so check Databricks documentation for actual number).
IsSingleNode bool
When set to true, Databricks will automatically set single node related custom_tags, spark_conf, and num_workers.
Kind string
The kind of compute described by this compute specification. Possible values (see API docs for full list): CLASSIC_PREVIEW (if corresponding public preview is enabled).
Libraries List<ClusterLibrary>
NoWait bool

If true, the provider will not wait for the cluster to reach RUNNING state when creating the cluster, allowing cluster creation and library installation to continue asynchronously. Defaults to false (the provider will wait for cluster creation and library installation to succeed).

The following example demonstrates how to create an autoscaling cluster with Delta Cache enabled:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const smallest = databricks.getNodeType({ localDisk: true, }); const latestLts = databricks.getSparkVersion({ longTermSupport: true, }); const sharedAutoscaling = new databricks.Cluster("shared_autoscaling", { clusterName: "Shared Autoscaling", sparkVersion: latestLts.then(latestLts => latestLts.id), nodeTypeId: smallest.then(smallest => smallest.id), autoterminationMinutes: 20, autoscale: { minWorkers: 1, maxWorkers: 50, }, sparkConf: { "spark.databricks.io.cache.enabled": "true", "spark.databricks.io.cache.maxDiskUsage": "50g", "spark.databricks.io.cache.maxMetaDataCache": "1g", }, });

import pulumi
import pulumi_databricks as databricks

smallest = databricks.get_node_type(local_disk=True)
latest_lts = databricks.get_spark_version(long_term_support=True)
shared_autoscaling = databricks.Cluster("shared_autoscaling",
    cluster_name="Shared Autoscaling",
    spark_version=latest_lts.id,
    node_type_id=smallest.id,
    autotermination_minutes=20,
    autoscale={
        "min_workers": 1,
        "max_workers": 50,
    },
    spark_conf={
        "spark.databricks.io.cache.enabled": "true",
        "spark.databricks.io.cache.maxDiskUsage": "50g",
        "spark.databricks.io.cache.maxMetaDataCache": "1g",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var smallest = Databricks.GetNodeType.Invoke(new()
    {
        LocalDisk = true,
    });

    var latestLts = Databricks.GetSparkVersion.Invoke(new()
    {
        LongTermSupport = true,
    });

    var sharedAutoscaling = new Databricks.Cluster("shared_autoscaling", new()
    {
        ClusterName = "Shared Autoscaling",
        SparkVersion = latestLts.Apply(getSparkVersionResult => getSparkVersionResult.Id),
        NodeTypeId = smallest.Apply(getNodeTypeResult => getNodeTypeResult.Id),
        AutoterminationMinutes = 20,
        Autoscale = new Databricks.Inputs.ClusterAutoscaleArgs
        {
            MinWorkers = 1,
            MaxWorkers = 50,
        },
        SparkConf = 
        {
            { "spark.databricks.io.cache.enabled", "true" },
            { "spark.databricks.io.cache.maxDiskUsage", "50g" },
            { "spark.databricks.io.cache.maxMetaDataCache", "1g" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		smallest, err := databricks.GetNodeType(ctx, &databricks.GetNodeTypeArgs{
			LocalDisk: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		latestLts, err := databricks.GetSparkVersion(ctx, &databricks.GetSparkVersionArgs{
			LongTermSupport: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		_, err = databricks.NewCluster(ctx, "shared_autoscaling", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Shared Autoscaling"),
			SparkVersion:           pulumi.String(latestLts.Id),
			NodeTypeId:             pulumi.String(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			Autoscale: &databricks.ClusterAutoscaleArgs{
				MinWorkers: pulumi.Int(1),
				MaxWorkers: pulumi.Int(50),
			},
			SparkConf: pulumi.StringMap{
				"spark.databricks.io.cache.enabled":          pulumi.String("true"),
				"spark.databricks.io.cache.maxDiskUsage":     pulumi.String("50g"),
				"spark.databricks.io.cache.maxMetaDataCache": pulumi.String("1g"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.DatabricksFunctions;
import com.pulumi.databricks.inputs.GetNodeTypeArgs;
import com.pulumi.databricks.inputs.GetSparkVersionArgs;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterAutoscaleArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        final var smallest = DatabricksFunctions.getNodeType(GetNodeTypeArgs.builder()
            .localDisk(true)
            .build());

        final var latestLts = DatabricksFunctions.getSparkVersion(GetSparkVersionArgs.builder()
            .longTermSupport(true)
            .build());

        var sharedAutoscaling = new Cluster("sharedAutoscaling", ClusterArgs.builder()
            .clusterName("Shared Autoscaling")
            .sparkVersion(latestLts.applyValue(getSparkVersionResult -> getSparkVersionResult.id()))
            .nodeTypeId(smallest.applyValue(getNodeTypeResult -> getNodeTypeResult.id()))
            .autoterminationMinutes(20)
            .autoscale(ClusterAutoscaleArgs.builder()
                .minWorkers(1)
                .maxWorkers(50)
                .build())
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.io.cache.enabled", true),
                Map.entry("spark.databricks.io.cache.maxDiskUsage", "50g"),
                Map.entry("spark.databricks.io.cache.maxMetaDataCache", "1g")
            ))
            .build());

    }
}
resources:
  sharedAutoscaling:
    type: databricks:Cluster
    name: shared_autoscaling
    properties:
      clusterName: Shared Autoscaling
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      autoscale:
        minWorkers: 1
        maxWorkers: 50
      sparkConf:
        spark.databricks.io.cache.enabled: true
        spark.databricks.io.cache.maxDiskUsage: 50g
        spark.databricks.io.cache.maxMetaDataCache: 1g
variables:
  smallest:
    fn::invoke:
      function: databricks:getNodeType
      arguments:
        localDisk: true
  latestLts:
    fn::invoke:
      function: databricks:getSparkVersion
      arguments:
        longTermSupport: true
NodeTypeId string
Any supported databricks.getNodeType id. If instance_pool_id is specified, this field is not needed.
NumWorkers int
Number of worker nodes that this cluster should have. A cluster has one Spark driver and num_workers executors for a total of num_workers + 1 Spark nodes.
PolicyId string
Identifier of Cluster Policy to validate cluster and preset certain defaults. The primary use for cluster policies is to allow users to create policy-scoped clusters via UI rather than sharing configuration for API-created clusters. For example, when you specify policy_id of external metastore policy, you still have to fill in relevant keys for spark_conf. If relevant fields aren't filled in, then it will cause the configuration drift detected on each plan/apply, and Pulumi will try to apply the detected changes.
RuntimeEngine string
The type of runtime engine to use. If not specified, the runtime engine type is inferred based on the spark_version value. Allowed values include: PHOTON, STANDARD.
SingleUserName string
The optional user name of the user (or group name if kind if specified) to assign to an interactive cluster. This field is required when using data_security_mode set to SINGLE_USER or AAD Passthrough for Azure Data Lake Storage (ADLS) with a single-user cluster (i.e., not high-concurrency clusters).
SparkConf Dictionary<string, string>
should have following items:

  • spark.databricks.repl.allowedLanguages set to a list of supported languages, for example: python,sql, or python,sql,r. Scala is not supported!
  • spark.databricks.cluster.profile set to serverless
SparkEnvVars Dictionary<string, string>
Map with environment variable key-value pairs to fine-tune Spark clusters. Key-value pairs of the form (X,Y) are exported (i.e., X='Y') while launching the driver and workers.
SparkVersion string
Runtime version of the cluster. Any supported databricks.getSparkVersion id. We advise using Cluster Policies to restrict the list of versions for simplicity while maintaining enough control.
SshPublicKeys List<string>
SSH public key contents that will be added to each Spark node in this cluster. The corresponding private keys can be used to login with the user name ubuntu on port 2200. You can specify up to 10 keys.
State string
(string) State of the cluster.
Url string
UseMlRuntime bool
Whenever ML runtime should be selected or not. Actual runtime is determined by spark_version (DBR release), this field use_ml_runtime, and whether node_type_id is GPU node or not.
WorkloadType ClusterWorkloadType
ApplyPolicyDefaultValues bool
Whether to use policy default values for missing cluster attributes.
Autoscale ClusterAutoscaleArgs
AutoterminationMinutes int
Automatically terminate the cluster after being inactive for this time in minutes. If specified, the threshold must be between 10 and 10000 minutes. You can also set this value to 0 to explicitly disable automatic termination. Defaults to 60. We highly recommend having this setting present for Interactive/BI clusters.
AwsAttributes ClusterAwsAttributesArgs
AzureAttributes ClusterAzureAttributesArgs
ClusterId string
ClusterLogConf ClusterClusterLogConfArgs
ClusterMountInfos []ClusterClusterMountInfoArgs
ClusterName string
Cluster name, which doesn’t have to be unique. If not specified at creation, the cluster name will be an empty string.
CustomTags map[string]string

should have tag ResourceClass set to value Serverless

For example:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const clusterWithTableAccessControl = new databricks.Cluster("cluster_with_table_access_control", { clusterName: "Shared High-Concurrency", sparkVersion: latestLts.id, nodeTypeId: smallest.id, autoterminationMinutes: 20, sparkConf: { "spark.databricks.repl.allowedLanguages": "python,sql", "spark.databricks.cluster.profile": "serverless", }, customTags: { ResourceClass: "Serverless", }, });

import pulumi
import pulumi_databricks as databricks

cluster_with_table_access_control = databricks.Cluster("cluster_with_table_access_control",
    cluster_name="Shared High-Concurrency",
    spark_version=latest_lts["id"],
    node_type_id=smallest["id"],
    autotermination_minutes=20,
    spark_conf={
        "spark.databricks.repl.allowedLanguages": "python,sql",
        "spark.databricks.cluster.profile": "serverless",
    },
    custom_tags={
        "ResourceClass": "Serverless",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var clusterWithTableAccessControl = new Databricks.Cluster("cluster_with_table_access_control", new()
    {
        ClusterName = "Shared High-Concurrency",
        SparkVersion = latestLts.Id,
        NodeTypeId = smallest.Id,
        AutoterminationMinutes = 20,
        SparkConf = 
        {
            { "spark.databricks.repl.allowedLanguages", "python,sql" },
            { "spark.databricks.cluster.profile", "serverless" },
        },
        CustomTags = 
        {
            { "ResourceClass", "Serverless" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := databricks.NewCluster(ctx, "cluster_with_table_access_control", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Shared High-Concurrency"),
			SparkVersion:           pulumi.Any(latestLts.Id),
			NodeTypeId:             pulumi.Any(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			SparkConf: pulumi.StringMap{
				"spark.databricks.repl.allowedLanguages": pulumi.String("python,sql"),
				"spark.databricks.cluster.profile":       pulumi.String("serverless"),
			},
			CustomTags: pulumi.StringMap{
				"ResourceClass": pulumi.String("Serverless"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var clusterWithTableAccessControl = new Cluster("clusterWithTableAccessControl", ClusterArgs.builder()
            .clusterName("Shared High-Concurrency")
            .sparkVersion(latestLts.id())
            .nodeTypeId(smallest.id())
            .autoterminationMinutes(20)
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.repl.allowedLanguages", "python,sql"),
                Map.entry("spark.databricks.cluster.profile", "serverless")
            ))
            .customTags(Map.of("ResourceClass", "Serverless"))
            .build());

    }
}
resources:
  clusterWithTableAccessControl:
    type: databricks:Cluster
    name: cluster_with_table_access_control
    properties:
      clusterName: Shared High-Concurrency
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      sparkConf:
        spark.databricks.repl.allowedLanguages: python,sql
        spark.databricks.cluster.profile: serverless
      customTags:
        ResourceClass: Serverless
DataSecurityMode string
Select the security features of the cluster (see API docs for full list of values). Unity Catalog requires SINGLE_USER or USER_ISOLATION mode. LEGACY_PASSTHROUGH for passthrough cluster and LEGACY_TABLE_ACL for Table ACL cluster. If omitted, default security features are enabled. To disable security features use NONE or legacy mode NO_ISOLATION. If kind is specified, then the following options are available:

  • DATA_SECURITY_MODE_AUTO: Databricks will choose the most appropriate access mode depending on your compute configuration.
  • DATA_SECURITY_MODE_STANDARD: Alias for USER_ISOLATION.
  • DATA_SECURITY_MODE_DEDICATED: Alias for SINGLE_USER.
DefaultTags map[string]string
(map) Tags that are added by Databricks by default, regardless of any custom_tags that may have been added. These include: Vendor: Databricks, Creator: <username_of_creator>, ClusterName: <name_of_cluster>, ClusterId: <id_of_cluster>, Name: , and any workspace and pool tags.
DockerImage ClusterDockerImageArgs
DriverInstancePoolId string
similar to instance_pool_id, but for driver node. If omitted, and instance_pool_id is specified, then the driver will be allocated from that pool.
DriverNodeTypeId string
The node type of the Spark driver. This field is optional; if unset, API will set the driver node type to the same value as node_type_id defined above.
EnableElasticDisk bool
If you don’t want to allocate a fixed number of EBS volumes at cluster creation time, use autoscaling local storage. With autoscaling local storage, Databricks monitors the amount of free disk space available on your cluster’s Spark workers. If a worker begins to run too low on disk, Databricks automatically attaches a new EBS volume to the worker before it runs out of disk space. EBS volumes are attached up to a limit of 5 TB of total disk space per instance (including the instance’s local storage). To scale down EBS usage, make sure you have autotermination_minutes and autoscale attributes set. More documentation available at cluster configuration page.
EnableLocalDiskEncryption bool
Some instance types you use to run clusters may have locally attached disks. Databricks may store shuffle data or temporary data on these locally attached disks. To ensure that all data at rest is encrypted for all storage types, including shuffle data stored temporarily on your cluster’s local disks, you can enable local disk encryption. When local disk encryption is enabled, Databricks generates an encryption key locally unique to each cluster node and uses it to encrypt all data stored on local disks. The scope of the key is local to each cluster node and is destroyed along with the cluster node itself. During its lifetime, the key resides in memory for encryption and decryption and is stored encrypted on the disk. Your workloads may run more slowly because of the performance impact of reading and writing encrypted data to and from local volumes. This feature is not available for all Azure Databricks subscriptions. Contact your Microsoft or Databricks account representative to request access.
GcpAttributes ClusterGcpAttributesArgs
IdempotencyToken Changes to this property will trigger replacement. string
An optional token to guarantee the idempotency of cluster creation requests. If an active cluster with the provided token already exists, the request will not create a new cluster, but it will return the existing running cluster's ID instead. If you specify the idempotency token, upon failure, you can retry until the request succeeds. Databricks platform guarantees to launch exactly one cluster with that idempotency token. This token should have at most 64 characters.
InitScripts []ClusterInitScriptArgs
InstancePoolId string
To reduce cluster start time, you can attach a cluster to a predefined pool of idle instances. When attached to a pool, a cluster allocates its driver and worker nodes from the pool. If the pool does not have sufficient idle resources to accommodate the cluster’s request, it expands by allocating new instances from the instance provider. When an attached cluster changes its state to TERMINATED, the instances it used are returned to the pool and reused by a different cluster.
IsPinned bool
boolean value specifying if the cluster is pinned (not pinned by default). You must be a Databricks administrator to use this. The pinned clusters' maximum number is limited to 100, so apply may fail if you have more than that (this number may change over time, so check Databricks documentation for actual number).
IsSingleNode bool
When set to true, Databricks will automatically set single node related custom_tags, spark_conf, and num_workers.
Kind string
The kind of compute described by this compute specification. Possible values (see API docs for full list): CLASSIC_PREVIEW (if corresponding public preview is enabled).
Libraries []ClusterLibraryArgs
NoWait bool

If true, the provider will not wait for the cluster to reach RUNNING state when creating the cluster, allowing cluster creation and library installation to continue asynchronously. Defaults to false (the provider will wait for cluster creation and library installation to succeed).

The following example demonstrates how to create an autoscaling cluster with Delta Cache enabled:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const smallest = databricks.getNodeType({ localDisk: true, }); const latestLts = databricks.getSparkVersion({ longTermSupport: true, }); const sharedAutoscaling = new databricks.Cluster("shared_autoscaling", { clusterName: "Shared Autoscaling", sparkVersion: latestLts.then(latestLts => latestLts.id), nodeTypeId: smallest.then(smallest => smallest.id), autoterminationMinutes: 20, autoscale: { minWorkers: 1, maxWorkers: 50, }, sparkConf: { "spark.databricks.io.cache.enabled": "true", "spark.databricks.io.cache.maxDiskUsage": "50g", "spark.databricks.io.cache.maxMetaDataCache": "1g", }, });

import pulumi
import pulumi_databricks as databricks

smallest = databricks.get_node_type(local_disk=True)
latest_lts = databricks.get_spark_version(long_term_support=True)
shared_autoscaling = databricks.Cluster("shared_autoscaling",
    cluster_name="Shared Autoscaling",
    spark_version=latest_lts.id,
    node_type_id=smallest.id,
    autotermination_minutes=20,
    autoscale={
        "min_workers": 1,
        "max_workers": 50,
    },
    spark_conf={
        "spark.databricks.io.cache.enabled": "true",
        "spark.databricks.io.cache.maxDiskUsage": "50g",
        "spark.databricks.io.cache.maxMetaDataCache": "1g",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var smallest = Databricks.GetNodeType.Invoke(new()
    {
        LocalDisk = true,
    });

    var latestLts = Databricks.GetSparkVersion.Invoke(new()
    {
        LongTermSupport = true,
    });

    var sharedAutoscaling = new Databricks.Cluster("shared_autoscaling", new()
    {
        ClusterName = "Shared Autoscaling",
        SparkVersion = latestLts.Apply(getSparkVersionResult => getSparkVersionResult.Id),
        NodeTypeId = smallest.Apply(getNodeTypeResult => getNodeTypeResult.Id),
        AutoterminationMinutes = 20,
        Autoscale = new Databricks.Inputs.ClusterAutoscaleArgs
        {
            MinWorkers = 1,
            MaxWorkers = 50,
        },
        SparkConf = 
        {
            { "spark.databricks.io.cache.enabled", "true" },
            { "spark.databricks.io.cache.maxDiskUsage", "50g" },
            { "spark.databricks.io.cache.maxMetaDataCache", "1g" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		smallest, err := databricks.GetNodeType(ctx, &databricks.GetNodeTypeArgs{
			LocalDisk: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		latestLts, err := databricks.GetSparkVersion(ctx, &databricks.GetSparkVersionArgs{
			LongTermSupport: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		_, err = databricks.NewCluster(ctx, "shared_autoscaling", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Shared Autoscaling"),
			SparkVersion:           pulumi.String(latestLts.Id),
			NodeTypeId:             pulumi.String(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			Autoscale: &databricks.ClusterAutoscaleArgs{
				MinWorkers: pulumi.Int(1),
				MaxWorkers: pulumi.Int(50),
			},
			SparkConf: pulumi.StringMap{
				"spark.databricks.io.cache.enabled":          pulumi.String("true"),
				"spark.databricks.io.cache.maxDiskUsage":     pulumi.String("50g"),
				"spark.databricks.io.cache.maxMetaDataCache": pulumi.String("1g"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.DatabricksFunctions;
import com.pulumi.databricks.inputs.GetNodeTypeArgs;
import com.pulumi.databricks.inputs.GetSparkVersionArgs;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterAutoscaleArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        final var smallest = DatabricksFunctions.getNodeType(GetNodeTypeArgs.builder()
            .localDisk(true)
            .build());

        final var latestLts = DatabricksFunctions.getSparkVersion(GetSparkVersionArgs.builder()
            .longTermSupport(true)
            .build());

        var sharedAutoscaling = new Cluster("sharedAutoscaling", ClusterArgs.builder()
            .clusterName("Shared Autoscaling")
            .sparkVersion(latestLts.applyValue(getSparkVersionResult -> getSparkVersionResult.id()))
            .nodeTypeId(smallest.applyValue(getNodeTypeResult -> getNodeTypeResult.id()))
            .autoterminationMinutes(20)
            .autoscale(ClusterAutoscaleArgs.builder()
                .minWorkers(1)
                .maxWorkers(50)
                .build())
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.io.cache.enabled", true),
                Map.entry("spark.databricks.io.cache.maxDiskUsage", "50g"),
                Map.entry("spark.databricks.io.cache.maxMetaDataCache", "1g")
            ))
            .build());

    }
}
resources:
  sharedAutoscaling:
    type: databricks:Cluster
    name: shared_autoscaling
    properties:
      clusterName: Shared Autoscaling
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      autoscale:
        minWorkers: 1
        maxWorkers: 50
      sparkConf:
        spark.databricks.io.cache.enabled: true
        spark.databricks.io.cache.maxDiskUsage: 50g
        spark.databricks.io.cache.maxMetaDataCache: 1g
variables:
  smallest:
    fn::invoke:
      function: databricks:getNodeType
      arguments:
        localDisk: true
  latestLts:
    fn::invoke:
      function: databricks:getSparkVersion
      arguments:
        longTermSupport: true
NodeTypeId string
Any supported databricks.getNodeType id. If instance_pool_id is specified, this field is not needed.
NumWorkers int
Number of worker nodes that this cluster should have. A cluster has one Spark driver and num_workers executors for a total of num_workers + 1 Spark nodes.
PolicyId string
Identifier of Cluster Policy to validate cluster and preset certain defaults. The primary use for cluster policies is to allow users to create policy-scoped clusters via UI rather than sharing configuration for API-created clusters. For example, when you specify policy_id of external metastore policy, you still have to fill in relevant keys for spark_conf. If relevant fields aren't filled in, then it will cause the configuration drift detected on each plan/apply, and Pulumi will try to apply the detected changes.
RuntimeEngine string
The type of runtime engine to use. If not specified, the runtime engine type is inferred based on the spark_version value. Allowed values include: PHOTON, STANDARD.
SingleUserName string
The optional user name of the user (or group name if kind if specified) to assign to an interactive cluster. This field is required when using data_security_mode set to SINGLE_USER or AAD Passthrough for Azure Data Lake Storage (ADLS) with a single-user cluster (i.e., not high-concurrency clusters).
SparkConf map[string]string
should have following items:

  • spark.databricks.repl.allowedLanguages set to a list of supported languages, for example: python,sql, or python,sql,r. Scala is not supported!
  • spark.databricks.cluster.profile set to serverless
SparkEnvVars map[string]string
Map with environment variable key-value pairs to fine-tune Spark clusters. Key-value pairs of the form (X,Y) are exported (i.e., X='Y') while launching the driver and workers.
SparkVersion string
Runtime version of the cluster. Any supported databricks.getSparkVersion id. We advise using Cluster Policies to restrict the list of versions for simplicity while maintaining enough control.
SshPublicKeys []string
SSH public key contents that will be added to each Spark node in this cluster. The corresponding private keys can be used to login with the user name ubuntu on port 2200. You can specify up to 10 keys.
State string
(string) State of the cluster.
Url string
UseMlRuntime bool
Whenever ML runtime should be selected or not. Actual runtime is determined by spark_version (DBR release), this field use_ml_runtime, and whether node_type_id is GPU node or not.
WorkloadType ClusterWorkloadTypeArgs
applyPolicyDefaultValues Boolean
Whether to use policy default values for missing cluster attributes.
autoscale ClusterAutoscale
autoterminationMinutes Integer
Automatically terminate the cluster after being inactive for this time in minutes. If specified, the threshold must be between 10 and 10000 minutes. You can also set this value to 0 to explicitly disable automatic termination. Defaults to 60. We highly recommend having this setting present for Interactive/BI clusters.
awsAttributes ClusterAwsAttributes
azureAttributes ClusterAzureAttributes
clusterId String
clusterLogConf ClusterClusterLogConf
clusterMountInfos List<ClusterClusterMountInfo>
clusterName String
Cluster name, which doesn’t have to be unique. If not specified at creation, the cluster name will be an empty string.
customTags Map<String,String>

should have tag ResourceClass set to value Serverless

For example:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const clusterWithTableAccessControl = new databricks.Cluster("cluster_with_table_access_control", { clusterName: "Shared High-Concurrency", sparkVersion: latestLts.id, nodeTypeId: smallest.id, autoterminationMinutes: 20, sparkConf: { "spark.databricks.repl.allowedLanguages": "python,sql", "spark.databricks.cluster.profile": "serverless", }, customTags: { ResourceClass: "Serverless", }, });

import pulumi
import pulumi_databricks as databricks

cluster_with_table_access_control = databricks.Cluster("cluster_with_table_access_control",
    cluster_name="Shared High-Concurrency",
    spark_version=latest_lts["id"],
    node_type_id=smallest["id"],
    autotermination_minutes=20,
    spark_conf={
        "spark.databricks.repl.allowedLanguages": "python,sql",
        "spark.databricks.cluster.profile": "serverless",
    },
    custom_tags={
        "ResourceClass": "Serverless",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var clusterWithTableAccessControl = new Databricks.Cluster("cluster_with_table_access_control", new()
    {
        ClusterName = "Shared High-Concurrency",
        SparkVersion = latestLts.Id,
        NodeTypeId = smallest.Id,
        AutoterminationMinutes = 20,
        SparkConf = 
        {
            { "spark.databricks.repl.allowedLanguages", "python,sql" },
            { "spark.databricks.cluster.profile", "serverless" },
        },
        CustomTags = 
        {
            { "ResourceClass", "Serverless" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := databricks.NewCluster(ctx, "cluster_with_table_access_control", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Shared High-Concurrency"),
			SparkVersion:           pulumi.Any(latestLts.Id),
			NodeTypeId:             pulumi.Any(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			SparkConf: pulumi.StringMap{
				"spark.databricks.repl.allowedLanguages": pulumi.String("python,sql"),
				"spark.databricks.cluster.profile":       pulumi.String("serverless"),
			},
			CustomTags: pulumi.StringMap{
				"ResourceClass": pulumi.String("Serverless"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var clusterWithTableAccessControl = new Cluster("clusterWithTableAccessControl", ClusterArgs.builder()
            .clusterName("Shared High-Concurrency")
            .sparkVersion(latestLts.id())
            .nodeTypeId(smallest.id())
            .autoterminationMinutes(20)
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.repl.allowedLanguages", "python,sql"),
                Map.entry("spark.databricks.cluster.profile", "serverless")
            ))
            .customTags(Map.of("ResourceClass", "Serverless"))
            .build());

    }
}
resources:
  clusterWithTableAccessControl:
    type: databricks:Cluster
    name: cluster_with_table_access_control
    properties:
      clusterName: Shared High-Concurrency
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      sparkConf:
        spark.databricks.repl.allowedLanguages: python,sql
        spark.databricks.cluster.profile: serverless
      customTags:
        ResourceClass: Serverless
dataSecurityMode String
Select the security features of the cluster (see API docs for full list of values). Unity Catalog requires SINGLE_USER or USER_ISOLATION mode. LEGACY_PASSTHROUGH for passthrough cluster and LEGACY_TABLE_ACL for Table ACL cluster. If omitted, default security features are enabled. To disable security features use NONE or legacy mode NO_ISOLATION. If kind is specified, then the following options are available:

  • DATA_SECURITY_MODE_AUTO: Databricks will choose the most appropriate access mode depending on your compute configuration.
  • DATA_SECURITY_MODE_STANDARD: Alias for USER_ISOLATION.
  • DATA_SECURITY_MODE_DEDICATED: Alias for SINGLE_USER.
defaultTags Map<String,String>
(map) Tags that are added by Databricks by default, regardless of any custom_tags that may have been added. These include: Vendor: Databricks, Creator: <username_of_creator>, ClusterName: <name_of_cluster>, ClusterId: <id_of_cluster>, Name: , and any workspace and pool tags.
dockerImage ClusterDockerImage
driverInstancePoolId String
similar to instance_pool_id, but for driver node. If omitted, and instance_pool_id is specified, then the driver will be allocated from that pool.
driverNodeTypeId String
The node type of the Spark driver. This field is optional; if unset, API will set the driver node type to the same value as node_type_id defined above.
enableElasticDisk Boolean
If you don’t want to allocate a fixed number of EBS volumes at cluster creation time, use autoscaling local storage. With autoscaling local storage, Databricks monitors the amount of free disk space available on your cluster’s Spark workers. If a worker begins to run too low on disk, Databricks automatically attaches a new EBS volume to the worker before it runs out of disk space. EBS volumes are attached up to a limit of 5 TB of total disk space per instance (including the instance’s local storage). To scale down EBS usage, make sure you have autotermination_minutes and autoscale attributes set. More documentation available at cluster configuration page.
enableLocalDiskEncryption Boolean
Some instance types you use to run clusters may have locally attached disks. Databricks may store shuffle data or temporary data on these locally attached disks. To ensure that all data at rest is encrypted for all storage types, including shuffle data stored temporarily on your cluster’s local disks, you can enable local disk encryption. When local disk encryption is enabled, Databricks generates an encryption key locally unique to each cluster node and uses it to encrypt all data stored on local disks. The scope of the key is local to each cluster node and is destroyed along with the cluster node itself. During its lifetime, the key resides in memory for encryption and decryption and is stored encrypted on the disk. Your workloads may run more slowly because of the performance impact of reading and writing encrypted data to and from local volumes. This feature is not available for all Azure Databricks subscriptions. Contact your Microsoft or Databricks account representative to request access.
gcpAttributes ClusterGcpAttributes
idempotencyToken Changes to this property will trigger replacement. String
An optional token to guarantee the idempotency of cluster creation requests. If an active cluster with the provided token already exists, the request will not create a new cluster, but it will return the existing running cluster's ID instead. If you specify the idempotency token, upon failure, you can retry until the request succeeds. Databricks platform guarantees to launch exactly one cluster with that idempotency token. This token should have at most 64 characters.
initScripts List<ClusterInitScript>
instancePoolId String
To reduce cluster start time, you can attach a cluster to a predefined pool of idle instances. When attached to a pool, a cluster allocates its driver and worker nodes from the pool. If the pool does not have sufficient idle resources to accommodate the cluster’s request, it expands by allocating new instances from the instance provider. When an attached cluster changes its state to TERMINATED, the instances it used are returned to the pool and reused by a different cluster.
isPinned Boolean
boolean value specifying if the cluster is pinned (not pinned by default). You must be a Databricks administrator to use this. The pinned clusters' maximum number is limited to 100, so apply may fail if you have more than that (this number may change over time, so check Databricks documentation for actual number).
isSingleNode Boolean
When set to true, Databricks will automatically set single node related custom_tags, spark_conf, and num_workers.
kind String
The kind of compute described by this compute specification. Possible values (see API docs for full list): CLASSIC_PREVIEW (if corresponding public preview is enabled).
libraries List<ClusterLibrary>
noWait Boolean

If true, the provider will not wait for the cluster to reach RUNNING state when creating the cluster, allowing cluster creation and library installation to continue asynchronously. Defaults to false (the provider will wait for cluster creation and library installation to succeed).

The following example demonstrates how to create an autoscaling cluster with Delta Cache enabled:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const smallest = databricks.getNodeType({ localDisk: true, }); const latestLts = databricks.getSparkVersion({ longTermSupport: true, }); const sharedAutoscaling = new databricks.Cluster("shared_autoscaling", { clusterName: "Shared Autoscaling", sparkVersion: latestLts.then(latestLts => latestLts.id), nodeTypeId: smallest.then(smallest => smallest.id), autoterminationMinutes: 20, autoscale: { minWorkers: 1, maxWorkers: 50, }, sparkConf: { "spark.databricks.io.cache.enabled": "true", "spark.databricks.io.cache.maxDiskUsage": "50g", "spark.databricks.io.cache.maxMetaDataCache": "1g", }, });

import pulumi
import pulumi_databricks as databricks

smallest = databricks.get_node_type(local_disk=True)
latest_lts = databricks.get_spark_version(long_term_support=True)
shared_autoscaling = databricks.Cluster("shared_autoscaling",
    cluster_name="Shared Autoscaling",
    spark_version=latest_lts.id,
    node_type_id=smallest.id,
    autotermination_minutes=20,
    autoscale={
        "min_workers": 1,
        "max_workers": 50,
    },
    spark_conf={
        "spark.databricks.io.cache.enabled": "true",
        "spark.databricks.io.cache.maxDiskUsage": "50g",
        "spark.databricks.io.cache.maxMetaDataCache": "1g",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var smallest = Databricks.GetNodeType.Invoke(new()
    {
        LocalDisk = true,
    });

    var latestLts = Databricks.GetSparkVersion.Invoke(new()
    {
        LongTermSupport = true,
    });

    var sharedAutoscaling = new Databricks.Cluster("shared_autoscaling", new()
    {
        ClusterName = "Shared Autoscaling",
        SparkVersion = latestLts.Apply(getSparkVersionResult => getSparkVersionResult.Id),
        NodeTypeId = smallest.Apply(getNodeTypeResult => getNodeTypeResult.Id),
        AutoterminationMinutes = 20,
        Autoscale = new Databricks.Inputs.ClusterAutoscaleArgs
        {
            MinWorkers = 1,
            MaxWorkers = 50,
        },
        SparkConf = 
        {
            { "spark.databricks.io.cache.enabled", "true" },
            { "spark.databricks.io.cache.maxDiskUsage", "50g" },
            { "spark.databricks.io.cache.maxMetaDataCache", "1g" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		smallest, err := databricks.GetNodeType(ctx, &databricks.GetNodeTypeArgs{
			LocalDisk: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		latestLts, err := databricks.GetSparkVersion(ctx, &databricks.GetSparkVersionArgs{
			LongTermSupport: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		_, err = databricks.NewCluster(ctx, "shared_autoscaling", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Shared Autoscaling"),
			SparkVersion:           pulumi.String(latestLts.Id),
			NodeTypeId:             pulumi.String(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			Autoscale: &databricks.ClusterAutoscaleArgs{
				MinWorkers: pulumi.Int(1),
				MaxWorkers: pulumi.Int(50),
			},
			SparkConf: pulumi.StringMap{
				"spark.databricks.io.cache.enabled":          pulumi.String("true"),
				"spark.databricks.io.cache.maxDiskUsage":     pulumi.String("50g"),
				"spark.databricks.io.cache.maxMetaDataCache": pulumi.String("1g"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.DatabricksFunctions;
import com.pulumi.databricks.inputs.GetNodeTypeArgs;
import com.pulumi.databricks.inputs.GetSparkVersionArgs;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterAutoscaleArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        final var smallest = DatabricksFunctions.getNodeType(GetNodeTypeArgs.builder()
            .localDisk(true)
            .build());

        final var latestLts = DatabricksFunctions.getSparkVersion(GetSparkVersionArgs.builder()
            .longTermSupport(true)
            .build());

        var sharedAutoscaling = new Cluster("sharedAutoscaling", ClusterArgs.builder()
            .clusterName("Shared Autoscaling")
            .sparkVersion(latestLts.applyValue(getSparkVersionResult -> getSparkVersionResult.id()))
            .nodeTypeId(smallest.applyValue(getNodeTypeResult -> getNodeTypeResult.id()))
            .autoterminationMinutes(20)
            .autoscale(ClusterAutoscaleArgs.builder()
                .minWorkers(1)
                .maxWorkers(50)
                .build())
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.io.cache.enabled", true),
                Map.entry("spark.databricks.io.cache.maxDiskUsage", "50g"),
                Map.entry("spark.databricks.io.cache.maxMetaDataCache", "1g")
            ))
            .build());

    }
}
resources:
  sharedAutoscaling:
    type: databricks:Cluster
    name: shared_autoscaling
    properties:
      clusterName: Shared Autoscaling
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      autoscale:
        minWorkers: 1
        maxWorkers: 50
      sparkConf:
        spark.databricks.io.cache.enabled: true
        spark.databricks.io.cache.maxDiskUsage: 50g
        spark.databricks.io.cache.maxMetaDataCache: 1g
variables:
  smallest:
    fn::invoke:
      function: databricks:getNodeType
      arguments:
        localDisk: true
  latestLts:
    fn::invoke:
      function: databricks:getSparkVersion
      arguments:
        longTermSupport: true
nodeTypeId String
Any supported databricks.getNodeType id. If instance_pool_id is specified, this field is not needed.
numWorkers Integer
Number of worker nodes that this cluster should have. A cluster has one Spark driver and num_workers executors for a total of num_workers + 1 Spark nodes.
policyId String
Identifier of Cluster Policy to validate cluster and preset certain defaults. The primary use for cluster policies is to allow users to create policy-scoped clusters via UI rather than sharing configuration for API-created clusters. For example, when you specify policy_id of external metastore policy, you still have to fill in relevant keys for spark_conf. If relevant fields aren't filled in, then it will cause the configuration drift detected on each plan/apply, and Pulumi will try to apply the detected changes.
runtimeEngine String
The type of runtime engine to use. If not specified, the runtime engine type is inferred based on the spark_version value. Allowed values include: PHOTON, STANDARD.
singleUserName String
The optional user name of the user (or group name if kind if specified) to assign to an interactive cluster. This field is required when using data_security_mode set to SINGLE_USER or AAD Passthrough for Azure Data Lake Storage (ADLS) with a single-user cluster (i.e., not high-concurrency clusters).
sparkConf Map<String,String>
should have following items:

  • spark.databricks.repl.allowedLanguages set to a list of supported languages, for example: python,sql, or python,sql,r. Scala is not supported!
  • spark.databricks.cluster.profile set to serverless
sparkEnvVars Map<String,String>
Map with environment variable key-value pairs to fine-tune Spark clusters. Key-value pairs of the form (X,Y) are exported (i.e., X='Y') while launching the driver and workers.
sparkVersion String
Runtime version of the cluster. Any supported databricks.getSparkVersion id. We advise using Cluster Policies to restrict the list of versions for simplicity while maintaining enough control.
sshPublicKeys List<String>
SSH public key contents that will be added to each Spark node in this cluster. The corresponding private keys can be used to login with the user name ubuntu on port 2200. You can specify up to 10 keys.
state String
(string) State of the cluster.
url String
useMlRuntime Boolean
Whenever ML runtime should be selected or not. Actual runtime is determined by spark_version (DBR release), this field use_ml_runtime, and whether node_type_id is GPU node or not.
workloadType ClusterWorkloadType
applyPolicyDefaultValues boolean
Whether to use policy default values for missing cluster attributes.
autoscale ClusterAutoscale
autoterminationMinutes number
Automatically terminate the cluster after being inactive for this time in minutes. If specified, the threshold must be between 10 and 10000 minutes. You can also set this value to 0 to explicitly disable automatic termination. Defaults to 60. We highly recommend having this setting present for Interactive/BI clusters.
awsAttributes ClusterAwsAttributes
azureAttributes ClusterAzureAttributes
clusterId string
clusterLogConf ClusterClusterLogConf
clusterMountInfos ClusterClusterMountInfo[]
clusterName string
Cluster name, which doesn’t have to be unique. If not specified at creation, the cluster name will be an empty string.
customTags {[key: string]: string}

should have tag ResourceClass set to value Serverless

For example:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const clusterWithTableAccessControl = new databricks.Cluster("cluster_with_table_access_control", { clusterName: "Shared High-Concurrency", sparkVersion: latestLts.id, nodeTypeId: smallest.id, autoterminationMinutes: 20, sparkConf: { "spark.databricks.repl.allowedLanguages": "python,sql", "spark.databricks.cluster.profile": "serverless", }, customTags: { ResourceClass: "Serverless", }, });

import pulumi
import pulumi_databricks as databricks

cluster_with_table_access_control = databricks.Cluster("cluster_with_table_access_control",
    cluster_name="Shared High-Concurrency",
    spark_version=latest_lts["id"],
    node_type_id=smallest["id"],
    autotermination_minutes=20,
    spark_conf={
        "spark.databricks.repl.allowedLanguages": "python,sql",
        "spark.databricks.cluster.profile": "serverless",
    },
    custom_tags={
        "ResourceClass": "Serverless",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var clusterWithTableAccessControl = new Databricks.Cluster("cluster_with_table_access_control", new()
    {
        ClusterName = "Shared High-Concurrency",
        SparkVersion = latestLts.Id,
        NodeTypeId = smallest.Id,
        AutoterminationMinutes = 20,
        SparkConf = 
        {
            { "spark.databricks.repl.allowedLanguages", "python,sql" },
            { "spark.databricks.cluster.profile", "serverless" },
        },
        CustomTags = 
        {
            { "ResourceClass", "Serverless" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := databricks.NewCluster(ctx, "cluster_with_table_access_control", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Shared High-Concurrency"),
			SparkVersion:           pulumi.Any(latestLts.Id),
			NodeTypeId:             pulumi.Any(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			SparkConf: pulumi.StringMap{
				"spark.databricks.repl.allowedLanguages": pulumi.String("python,sql"),
				"spark.databricks.cluster.profile":       pulumi.String("serverless"),
			},
			CustomTags: pulumi.StringMap{
				"ResourceClass": pulumi.String("Serverless"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var clusterWithTableAccessControl = new Cluster("clusterWithTableAccessControl", ClusterArgs.builder()
            .clusterName("Shared High-Concurrency")
            .sparkVersion(latestLts.id())
            .nodeTypeId(smallest.id())
            .autoterminationMinutes(20)
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.repl.allowedLanguages", "python,sql"),
                Map.entry("spark.databricks.cluster.profile", "serverless")
            ))
            .customTags(Map.of("ResourceClass", "Serverless"))
            .build());

    }
}
resources:
  clusterWithTableAccessControl:
    type: databricks:Cluster
    name: cluster_with_table_access_control
    properties:
      clusterName: Shared High-Concurrency
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      sparkConf:
        spark.databricks.repl.allowedLanguages: python,sql
        spark.databricks.cluster.profile: serverless
      customTags:
        ResourceClass: Serverless
dataSecurityMode string
Select the security features of the cluster (see API docs for full list of values). Unity Catalog requires SINGLE_USER or USER_ISOLATION mode. LEGACY_PASSTHROUGH for passthrough cluster and LEGACY_TABLE_ACL for Table ACL cluster. If omitted, default security features are enabled. To disable security features use NONE or legacy mode NO_ISOLATION. If kind is specified, then the following options are available:

  • DATA_SECURITY_MODE_AUTO: Databricks will choose the most appropriate access mode depending on your compute configuration.
  • DATA_SECURITY_MODE_STANDARD: Alias for USER_ISOLATION.
  • DATA_SECURITY_MODE_DEDICATED: Alias for SINGLE_USER.
defaultTags {[key: string]: string}
(map) Tags that are added by Databricks by default, regardless of any custom_tags that may have been added. These include: Vendor: Databricks, Creator: <username_of_creator>, ClusterName: <name_of_cluster>, ClusterId: <id_of_cluster>, Name: , and any workspace and pool tags.
dockerImage ClusterDockerImage
driverInstancePoolId string
similar to instance_pool_id, but for driver node. If omitted, and instance_pool_id is specified, then the driver will be allocated from that pool.
driverNodeTypeId string
The node type of the Spark driver. This field is optional; if unset, API will set the driver node type to the same value as node_type_id defined above.
enableElasticDisk boolean
If you don’t want to allocate a fixed number of EBS volumes at cluster creation time, use autoscaling local storage. With autoscaling local storage, Databricks monitors the amount of free disk space available on your cluster’s Spark workers. If a worker begins to run too low on disk, Databricks automatically attaches a new EBS volume to the worker before it runs out of disk space. EBS volumes are attached up to a limit of 5 TB of total disk space per instance (including the instance’s local storage). To scale down EBS usage, make sure you have autotermination_minutes and autoscale attributes set. More documentation available at cluster configuration page.
enableLocalDiskEncryption boolean
Some instance types you use to run clusters may have locally attached disks. Databricks may store shuffle data or temporary data on these locally attached disks. To ensure that all data at rest is encrypted for all storage types, including shuffle data stored temporarily on your cluster’s local disks, you can enable local disk encryption. When local disk encryption is enabled, Databricks generates an encryption key locally unique to each cluster node and uses it to encrypt all data stored on local disks. The scope of the key is local to each cluster node and is destroyed along with the cluster node itself. During its lifetime, the key resides in memory for encryption and decryption and is stored encrypted on the disk. Your workloads may run more slowly because of the performance impact of reading and writing encrypted data to and from local volumes. This feature is not available for all Azure Databricks subscriptions. Contact your Microsoft or Databricks account representative to request access.
gcpAttributes ClusterGcpAttributes
idempotencyToken Changes to this property will trigger replacement. string
An optional token to guarantee the idempotency of cluster creation requests. If an active cluster with the provided token already exists, the request will not create a new cluster, but it will return the existing running cluster's ID instead. If you specify the idempotency token, upon failure, you can retry until the request succeeds. Databricks platform guarantees to launch exactly one cluster with that idempotency token. This token should have at most 64 characters.
initScripts ClusterInitScript[]
instancePoolId string
To reduce cluster start time, you can attach a cluster to a predefined pool of idle instances. When attached to a pool, a cluster allocates its driver and worker nodes from the pool. If the pool does not have sufficient idle resources to accommodate the cluster’s request, it expands by allocating new instances from the instance provider. When an attached cluster changes its state to TERMINATED, the instances it used are returned to the pool and reused by a different cluster.
isPinned boolean
boolean value specifying if the cluster is pinned (not pinned by default). You must be a Databricks administrator to use this. The pinned clusters' maximum number is limited to 100, so apply may fail if you have more than that (this number may change over time, so check Databricks documentation for actual number).
isSingleNode boolean
When set to true, Databricks will automatically set single node related custom_tags, spark_conf, and num_workers.
kind string
The kind of compute described by this compute specification. Possible values (see API docs for full list): CLASSIC_PREVIEW (if corresponding public preview is enabled).
libraries ClusterLibrary[]
noWait boolean

If true, the provider will not wait for the cluster to reach RUNNING state when creating the cluster, allowing cluster creation and library installation to continue asynchronously. Defaults to false (the provider will wait for cluster creation and library installation to succeed).

The following example demonstrates how to create an autoscaling cluster with Delta Cache enabled:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const smallest = databricks.getNodeType({ localDisk: true, }); const latestLts = databricks.getSparkVersion({ longTermSupport: true, }); const sharedAutoscaling = new databricks.Cluster("shared_autoscaling", { clusterName: "Shared Autoscaling", sparkVersion: latestLts.then(latestLts => latestLts.id), nodeTypeId: smallest.then(smallest => smallest.id), autoterminationMinutes: 20, autoscale: { minWorkers: 1, maxWorkers: 50, }, sparkConf: { "spark.databricks.io.cache.enabled": "true", "spark.databricks.io.cache.maxDiskUsage": "50g", "spark.databricks.io.cache.maxMetaDataCache": "1g", }, });

import pulumi
import pulumi_databricks as databricks

smallest = databricks.get_node_type(local_disk=True)
latest_lts = databricks.get_spark_version(long_term_support=True)
shared_autoscaling = databricks.Cluster("shared_autoscaling",
    cluster_name="Shared Autoscaling",
    spark_version=latest_lts.id,
    node_type_id=smallest.id,
    autotermination_minutes=20,
    autoscale={
        "min_workers": 1,
        "max_workers": 50,
    },
    spark_conf={
        "spark.databricks.io.cache.enabled": "true",
        "spark.databricks.io.cache.maxDiskUsage": "50g",
        "spark.databricks.io.cache.maxMetaDataCache": "1g",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var smallest = Databricks.GetNodeType.Invoke(new()
    {
        LocalDisk = true,
    });

    var latestLts = Databricks.GetSparkVersion.Invoke(new()
    {
        LongTermSupport = true,
    });

    var sharedAutoscaling = new Databricks.Cluster("shared_autoscaling", new()
    {
        ClusterName = "Shared Autoscaling",
        SparkVersion = latestLts.Apply(getSparkVersionResult => getSparkVersionResult.Id),
        NodeTypeId = smallest.Apply(getNodeTypeResult => getNodeTypeResult.Id),
        AutoterminationMinutes = 20,
        Autoscale = new Databricks.Inputs.ClusterAutoscaleArgs
        {
            MinWorkers = 1,
            MaxWorkers = 50,
        },
        SparkConf = 
        {
            { "spark.databricks.io.cache.enabled", "true" },
            { "spark.databricks.io.cache.maxDiskUsage", "50g" },
            { "spark.databricks.io.cache.maxMetaDataCache", "1g" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		smallest, err := databricks.GetNodeType(ctx, &databricks.GetNodeTypeArgs{
			LocalDisk: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		latestLts, err := databricks.GetSparkVersion(ctx, &databricks.GetSparkVersionArgs{
			LongTermSupport: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		_, err = databricks.NewCluster(ctx, "shared_autoscaling", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Shared Autoscaling"),
			SparkVersion:           pulumi.String(latestLts.Id),
			NodeTypeId:             pulumi.String(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			Autoscale: &databricks.ClusterAutoscaleArgs{
				MinWorkers: pulumi.Int(1),
				MaxWorkers: pulumi.Int(50),
			},
			SparkConf: pulumi.StringMap{
				"spark.databricks.io.cache.enabled":          pulumi.String("true"),
				"spark.databricks.io.cache.maxDiskUsage":     pulumi.String("50g"),
				"spark.databricks.io.cache.maxMetaDataCache": pulumi.String("1g"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.DatabricksFunctions;
import com.pulumi.databricks.inputs.GetNodeTypeArgs;
import com.pulumi.databricks.inputs.GetSparkVersionArgs;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterAutoscaleArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        final var smallest = DatabricksFunctions.getNodeType(GetNodeTypeArgs.builder()
            .localDisk(true)
            .build());

        final var latestLts = DatabricksFunctions.getSparkVersion(GetSparkVersionArgs.builder()
            .longTermSupport(true)
            .build());

        var sharedAutoscaling = new Cluster("sharedAutoscaling", ClusterArgs.builder()
            .clusterName("Shared Autoscaling")
            .sparkVersion(latestLts.applyValue(getSparkVersionResult -> getSparkVersionResult.id()))
            .nodeTypeId(smallest.applyValue(getNodeTypeResult -> getNodeTypeResult.id()))
            .autoterminationMinutes(20)
            .autoscale(ClusterAutoscaleArgs.builder()
                .minWorkers(1)
                .maxWorkers(50)
                .build())
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.io.cache.enabled", true),
                Map.entry("spark.databricks.io.cache.maxDiskUsage", "50g"),
                Map.entry("spark.databricks.io.cache.maxMetaDataCache", "1g")
            ))
            .build());

    }
}
resources:
  sharedAutoscaling:
    type: databricks:Cluster
    name: shared_autoscaling
    properties:
      clusterName: Shared Autoscaling
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      autoscale:
        minWorkers: 1
        maxWorkers: 50
      sparkConf:
        spark.databricks.io.cache.enabled: true
        spark.databricks.io.cache.maxDiskUsage: 50g
        spark.databricks.io.cache.maxMetaDataCache: 1g
variables:
  smallest:
    fn::invoke:
      function: databricks:getNodeType
      arguments:
        localDisk: true
  latestLts:
    fn::invoke:
      function: databricks:getSparkVersion
      arguments:
        longTermSupport: true
nodeTypeId string
Any supported databricks.getNodeType id. If instance_pool_id is specified, this field is not needed.
numWorkers number
Number of worker nodes that this cluster should have. A cluster has one Spark driver and num_workers executors for a total of num_workers + 1 Spark nodes.
policyId string
Identifier of Cluster Policy to validate cluster and preset certain defaults. The primary use for cluster policies is to allow users to create policy-scoped clusters via UI rather than sharing configuration for API-created clusters. For example, when you specify policy_id of external metastore policy, you still have to fill in relevant keys for spark_conf. If relevant fields aren't filled in, then it will cause the configuration drift detected on each plan/apply, and Pulumi will try to apply the detected changes.
runtimeEngine string
The type of runtime engine to use. If not specified, the runtime engine type is inferred based on the spark_version value. Allowed values include: PHOTON, STANDARD.
singleUserName string
The optional user name of the user (or group name if kind if specified) to assign to an interactive cluster. This field is required when using data_security_mode set to SINGLE_USER or AAD Passthrough for Azure Data Lake Storage (ADLS) with a single-user cluster (i.e., not high-concurrency clusters).
sparkConf {[key: string]: string}
should have following items:

  • spark.databricks.repl.allowedLanguages set to a list of supported languages, for example: python,sql, or python,sql,r. Scala is not supported!
  • spark.databricks.cluster.profile set to serverless
sparkEnvVars {[key: string]: string}
Map with environment variable key-value pairs to fine-tune Spark clusters. Key-value pairs of the form (X,Y) are exported (i.e., X='Y') while launching the driver and workers.
sparkVersion string
Runtime version of the cluster. Any supported databricks.getSparkVersion id. We advise using Cluster Policies to restrict the list of versions for simplicity while maintaining enough control.
sshPublicKeys string[]
SSH public key contents that will be added to each Spark node in this cluster. The corresponding private keys can be used to login with the user name ubuntu on port 2200. You can specify up to 10 keys.
state string
(string) State of the cluster.
url string
useMlRuntime boolean
Whenever ML runtime should be selected or not. Actual runtime is determined by spark_version (DBR release), this field use_ml_runtime, and whether node_type_id is GPU node or not.
workloadType ClusterWorkloadType
apply_policy_default_values bool
Whether to use policy default values for missing cluster attributes.
autoscale ClusterAutoscaleArgs
autotermination_minutes int
Automatically terminate the cluster after being inactive for this time in minutes. If specified, the threshold must be between 10 and 10000 minutes. You can also set this value to 0 to explicitly disable automatic termination. Defaults to 60. We highly recommend having this setting present for Interactive/BI clusters.
aws_attributes ClusterAwsAttributesArgs
azure_attributes ClusterAzureAttributesArgs
cluster_id str
cluster_log_conf ClusterClusterLogConfArgs
cluster_mount_infos Sequence[ClusterClusterMountInfoArgs]
cluster_name str
Cluster name, which doesn’t have to be unique. If not specified at creation, the cluster name will be an empty string.
custom_tags Mapping[str, str]

should have tag ResourceClass set to value Serverless

For example:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const clusterWithTableAccessControl = new databricks.Cluster("cluster_with_table_access_control", { clusterName: "Shared High-Concurrency", sparkVersion: latestLts.id, nodeTypeId: smallest.id, autoterminationMinutes: 20, sparkConf: { "spark.databricks.repl.allowedLanguages": "python,sql", "spark.databricks.cluster.profile": "serverless", }, customTags: { ResourceClass: "Serverless", }, });

import pulumi
import pulumi_databricks as databricks

cluster_with_table_access_control = databricks.Cluster("cluster_with_table_access_control",
    cluster_name="Shared High-Concurrency",
    spark_version=latest_lts["id"],
    node_type_id=smallest["id"],
    autotermination_minutes=20,
    spark_conf={
        "spark.databricks.repl.allowedLanguages": "python,sql",
        "spark.databricks.cluster.profile": "serverless",
    },
    custom_tags={
        "ResourceClass": "Serverless",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var clusterWithTableAccessControl = new Databricks.Cluster("cluster_with_table_access_control", new()
    {
        ClusterName = "Shared High-Concurrency",
        SparkVersion = latestLts.Id,
        NodeTypeId = smallest.Id,
        AutoterminationMinutes = 20,
        SparkConf = 
        {
            { "spark.databricks.repl.allowedLanguages", "python,sql" },
            { "spark.databricks.cluster.profile", "serverless" },
        },
        CustomTags = 
        {
            { "ResourceClass", "Serverless" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := databricks.NewCluster(ctx, "cluster_with_table_access_control", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Shared High-Concurrency"),
			SparkVersion:           pulumi.Any(latestLts.Id),
			NodeTypeId:             pulumi.Any(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			SparkConf: pulumi.StringMap{
				"spark.databricks.repl.allowedLanguages": pulumi.String("python,sql"),
				"spark.databricks.cluster.profile":       pulumi.String("serverless"),
			},
			CustomTags: pulumi.StringMap{
				"ResourceClass": pulumi.String("Serverless"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var clusterWithTableAccessControl = new Cluster("clusterWithTableAccessControl", ClusterArgs.builder()
            .clusterName("Shared High-Concurrency")
            .sparkVersion(latestLts.id())
            .nodeTypeId(smallest.id())
            .autoterminationMinutes(20)
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.repl.allowedLanguages", "python,sql"),
                Map.entry("spark.databricks.cluster.profile", "serverless")
            ))
            .customTags(Map.of("ResourceClass", "Serverless"))
            .build());

    }
}
resources:
  clusterWithTableAccessControl:
    type: databricks:Cluster
    name: cluster_with_table_access_control
    properties:
      clusterName: Shared High-Concurrency
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      sparkConf:
        spark.databricks.repl.allowedLanguages: python,sql
        spark.databricks.cluster.profile: serverless
      customTags:
        ResourceClass: Serverless
data_security_mode str
Select the security features of the cluster (see API docs for full list of values). Unity Catalog requires SINGLE_USER or USER_ISOLATION mode. LEGACY_PASSTHROUGH for passthrough cluster and LEGACY_TABLE_ACL for Table ACL cluster. If omitted, default security features are enabled. To disable security features use NONE or legacy mode NO_ISOLATION. If kind is specified, then the following options are available:

  • DATA_SECURITY_MODE_AUTO: Databricks will choose the most appropriate access mode depending on your compute configuration.
  • DATA_SECURITY_MODE_STANDARD: Alias for USER_ISOLATION.
  • DATA_SECURITY_MODE_DEDICATED: Alias for SINGLE_USER.
default_tags Mapping[str, str]
(map) Tags that are added by Databricks by default, regardless of any custom_tags that may have been added. These include: Vendor: Databricks, Creator: <username_of_creator>, ClusterName: <name_of_cluster>, ClusterId: <id_of_cluster>, Name: , and any workspace and pool tags.
docker_image ClusterDockerImageArgs
driver_instance_pool_id str
similar to instance_pool_id, but for driver node. If omitted, and instance_pool_id is specified, then the driver will be allocated from that pool.
driver_node_type_id str
The node type of the Spark driver. This field is optional; if unset, API will set the driver node type to the same value as node_type_id defined above.
enable_elastic_disk bool
If you don’t want to allocate a fixed number of EBS volumes at cluster creation time, use autoscaling local storage. With autoscaling local storage, Databricks monitors the amount of free disk space available on your cluster’s Spark workers. If a worker begins to run too low on disk, Databricks automatically attaches a new EBS volume to the worker before it runs out of disk space. EBS volumes are attached up to a limit of 5 TB of total disk space per instance (including the instance’s local storage). To scale down EBS usage, make sure you have autotermination_minutes and autoscale attributes set. More documentation available at cluster configuration page.
enable_local_disk_encryption bool
Some instance types you use to run clusters may have locally attached disks. Databricks may store shuffle data or temporary data on these locally attached disks. To ensure that all data at rest is encrypted for all storage types, including shuffle data stored temporarily on your cluster’s local disks, you can enable local disk encryption. When local disk encryption is enabled, Databricks generates an encryption key locally unique to each cluster node and uses it to encrypt all data stored on local disks. The scope of the key is local to each cluster node and is destroyed along with the cluster node itself. During its lifetime, the key resides in memory for encryption and decryption and is stored encrypted on the disk. Your workloads may run more slowly because of the performance impact of reading and writing encrypted data to and from local volumes. This feature is not available for all Azure Databricks subscriptions. Contact your Microsoft or Databricks account representative to request access.
gcp_attributes ClusterGcpAttributesArgs
idempotency_token Changes to this property will trigger replacement. str
An optional token to guarantee the idempotency of cluster creation requests. If an active cluster with the provided token already exists, the request will not create a new cluster, but it will return the existing running cluster's ID instead. If you specify the idempotency token, upon failure, you can retry until the request succeeds. Databricks platform guarantees to launch exactly one cluster with that idempotency token. This token should have at most 64 characters.
init_scripts Sequence[ClusterInitScriptArgs]
instance_pool_id str
To reduce cluster start time, you can attach a cluster to a predefined pool of idle instances. When attached to a pool, a cluster allocates its driver and worker nodes from the pool. If the pool does not have sufficient idle resources to accommodate the cluster’s request, it expands by allocating new instances from the instance provider. When an attached cluster changes its state to TERMINATED, the instances it used are returned to the pool and reused by a different cluster.
is_pinned bool
boolean value specifying if the cluster is pinned (not pinned by default). You must be a Databricks administrator to use this. The pinned clusters' maximum number is limited to 100, so apply may fail if you have more than that (this number may change over time, so check Databricks documentation for actual number).
is_single_node bool
When set to true, Databricks will automatically set single node related custom_tags, spark_conf, and num_workers.
kind str
The kind of compute described by this compute specification. Possible values (see API docs for full list): CLASSIC_PREVIEW (if corresponding public preview is enabled).
libraries Sequence[ClusterLibraryArgs]
no_wait bool

If true, the provider will not wait for the cluster to reach RUNNING state when creating the cluster, allowing cluster creation and library installation to continue asynchronously. Defaults to false (the provider will wait for cluster creation and library installation to succeed).

The following example demonstrates how to create an autoscaling cluster with Delta Cache enabled:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const smallest = databricks.getNodeType({ localDisk: true, }); const latestLts = databricks.getSparkVersion({ longTermSupport: true, }); const sharedAutoscaling = new databricks.Cluster("shared_autoscaling", { clusterName: "Shared Autoscaling", sparkVersion: latestLts.then(latestLts => latestLts.id), nodeTypeId: smallest.then(smallest => smallest.id), autoterminationMinutes: 20, autoscale: { minWorkers: 1, maxWorkers: 50, }, sparkConf: { "spark.databricks.io.cache.enabled": "true", "spark.databricks.io.cache.maxDiskUsage": "50g", "spark.databricks.io.cache.maxMetaDataCache": "1g", }, });

import pulumi
import pulumi_databricks as databricks

smallest = databricks.get_node_type(local_disk=True)
latest_lts = databricks.get_spark_version(long_term_support=True)
shared_autoscaling = databricks.Cluster("shared_autoscaling",
    cluster_name="Shared Autoscaling",
    spark_version=latest_lts.id,
    node_type_id=smallest.id,
    autotermination_minutes=20,
    autoscale={
        "min_workers": 1,
        "max_workers": 50,
    },
    spark_conf={
        "spark.databricks.io.cache.enabled": "true",
        "spark.databricks.io.cache.maxDiskUsage": "50g",
        "spark.databricks.io.cache.maxMetaDataCache": "1g",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var smallest = Databricks.GetNodeType.Invoke(new()
    {
        LocalDisk = true,
    });

    var latestLts = Databricks.GetSparkVersion.Invoke(new()
    {
        LongTermSupport = true,
    });

    var sharedAutoscaling = new Databricks.Cluster("shared_autoscaling", new()
    {
        ClusterName = "Shared Autoscaling",
        SparkVersion = latestLts.Apply(getSparkVersionResult => getSparkVersionResult.Id),
        NodeTypeId = smallest.Apply(getNodeTypeResult => getNodeTypeResult.Id),
        AutoterminationMinutes = 20,
        Autoscale = new Databricks.Inputs.ClusterAutoscaleArgs
        {
            MinWorkers = 1,
            MaxWorkers = 50,
        },
        SparkConf = 
        {
            { "spark.databricks.io.cache.enabled", "true" },
            { "spark.databricks.io.cache.maxDiskUsage", "50g" },
            { "spark.databricks.io.cache.maxMetaDataCache", "1g" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		smallest, err := databricks.GetNodeType(ctx, &databricks.GetNodeTypeArgs{
			LocalDisk: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		latestLts, err := databricks.GetSparkVersion(ctx, &databricks.GetSparkVersionArgs{
			LongTermSupport: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		_, err = databricks.NewCluster(ctx, "shared_autoscaling", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Shared Autoscaling"),
			SparkVersion:           pulumi.String(latestLts.Id),
			NodeTypeId:             pulumi.String(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			Autoscale: &databricks.ClusterAutoscaleArgs{
				MinWorkers: pulumi.Int(1),
				MaxWorkers: pulumi.Int(50),
			},
			SparkConf: pulumi.StringMap{
				"spark.databricks.io.cache.enabled":          pulumi.String("true"),
				"spark.databricks.io.cache.maxDiskUsage":     pulumi.String("50g"),
				"spark.databricks.io.cache.maxMetaDataCache": pulumi.String("1g"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.DatabricksFunctions;
import com.pulumi.databricks.inputs.GetNodeTypeArgs;
import com.pulumi.databricks.inputs.GetSparkVersionArgs;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterAutoscaleArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        final var smallest = DatabricksFunctions.getNodeType(GetNodeTypeArgs.builder()
            .localDisk(true)
            .build());

        final var latestLts = DatabricksFunctions.getSparkVersion(GetSparkVersionArgs.builder()
            .longTermSupport(true)
            .build());

        var sharedAutoscaling = new Cluster("sharedAutoscaling", ClusterArgs.builder()
            .clusterName("Shared Autoscaling")
            .sparkVersion(latestLts.applyValue(getSparkVersionResult -> getSparkVersionResult.id()))
            .nodeTypeId(smallest.applyValue(getNodeTypeResult -> getNodeTypeResult.id()))
            .autoterminationMinutes(20)
            .autoscale(ClusterAutoscaleArgs.builder()
                .minWorkers(1)
                .maxWorkers(50)
                .build())
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.io.cache.enabled", true),
                Map.entry("spark.databricks.io.cache.maxDiskUsage", "50g"),
                Map.entry("spark.databricks.io.cache.maxMetaDataCache", "1g")
            ))
            .build());

    }
}
resources:
  sharedAutoscaling:
    type: databricks:Cluster
    name: shared_autoscaling
    properties:
      clusterName: Shared Autoscaling
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      autoscale:
        minWorkers: 1
        maxWorkers: 50
      sparkConf:
        spark.databricks.io.cache.enabled: true
        spark.databricks.io.cache.maxDiskUsage: 50g
        spark.databricks.io.cache.maxMetaDataCache: 1g
variables:
  smallest:
    fn::invoke:
      function: databricks:getNodeType
      arguments:
        localDisk: true
  latestLts:
    fn::invoke:
      function: databricks:getSparkVersion
      arguments:
        longTermSupport: true
node_type_id str
Any supported databricks.getNodeType id. If instance_pool_id is specified, this field is not needed.
num_workers int
Number of worker nodes that this cluster should have. A cluster has one Spark driver and num_workers executors for a total of num_workers + 1 Spark nodes.
policy_id str
Identifier of Cluster Policy to validate cluster and preset certain defaults. The primary use for cluster policies is to allow users to create policy-scoped clusters via UI rather than sharing configuration for API-created clusters. For example, when you specify policy_id of external metastore policy, you still have to fill in relevant keys for spark_conf. If relevant fields aren't filled in, then it will cause the configuration drift detected on each plan/apply, and Pulumi will try to apply the detected changes.
runtime_engine str
The type of runtime engine to use. If not specified, the runtime engine type is inferred based on the spark_version value. Allowed values include: PHOTON, STANDARD.
single_user_name str
The optional user name of the user (or group name if kind if specified) to assign to an interactive cluster. This field is required when using data_security_mode set to SINGLE_USER or AAD Passthrough for Azure Data Lake Storage (ADLS) with a single-user cluster (i.e., not high-concurrency clusters).
spark_conf Mapping[str, str]
should have following items:

  • spark.databricks.repl.allowedLanguages set to a list of supported languages, for example: python,sql, or python,sql,r. Scala is not supported!
  • spark.databricks.cluster.profile set to serverless
spark_env_vars Mapping[str, str]
Map with environment variable key-value pairs to fine-tune Spark clusters. Key-value pairs of the form (X,Y) are exported (i.e., X='Y') while launching the driver and workers.
spark_version str
Runtime version of the cluster. Any supported databricks.getSparkVersion id. We advise using Cluster Policies to restrict the list of versions for simplicity while maintaining enough control.
ssh_public_keys Sequence[str]
SSH public key contents that will be added to each Spark node in this cluster. The corresponding private keys can be used to login with the user name ubuntu on port 2200. You can specify up to 10 keys.
state str
(string) State of the cluster.
url str
use_ml_runtime bool
Whenever ML runtime should be selected or not. Actual runtime is determined by spark_version (DBR release), this field use_ml_runtime, and whether node_type_id is GPU node or not.
workload_type ClusterWorkloadTypeArgs
applyPolicyDefaultValues Boolean
Whether to use policy default values for missing cluster attributes.
autoscale Property Map
autoterminationMinutes Number
Automatically terminate the cluster after being inactive for this time in minutes. If specified, the threshold must be between 10 and 10000 minutes. You can also set this value to 0 to explicitly disable automatic termination. Defaults to 60. We highly recommend having this setting present for Interactive/BI clusters.
awsAttributes Property Map
azureAttributes Property Map
clusterId String
clusterLogConf Property Map
clusterMountInfos List<Property Map>
clusterName String
Cluster name, which doesn’t have to be unique. If not specified at creation, the cluster name will be an empty string.
customTags Map<String>

should have tag ResourceClass set to value Serverless

For example:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const clusterWithTableAccessControl = new databricks.Cluster("cluster_with_table_access_control", { clusterName: "Shared High-Concurrency", sparkVersion: latestLts.id, nodeTypeId: smallest.id, autoterminationMinutes: 20, sparkConf: { "spark.databricks.repl.allowedLanguages": "python,sql", "spark.databricks.cluster.profile": "serverless", }, customTags: { ResourceClass: "Serverless", }, });

import pulumi
import pulumi_databricks as databricks

cluster_with_table_access_control = databricks.Cluster("cluster_with_table_access_control",
    cluster_name="Shared High-Concurrency",
    spark_version=latest_lts["id"],
    node_type_id=smallest["id"],
    autotermination_minutes=20,
    spark_conf={
        "spark.databricks.repl.allowedLanguages": "python,sql",
        "spark.databricks.cluster.profile": "serverless",
    },
    custom_tags={
        "ResourceClass": "Serverless",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var clusterWithTableAccessControl = new Databricks.Cluster("cluster_with_table_access_control", new()
    {
        ClusterName = "Shared High-Concurrency",
        SparkVersion = latestLts.Id,
        NodeTypeId = smallest.Id,
        AutoterminationMinutes = 20,
        SparkConf = 
        {
            { "spark.databricks.repl.allowedLanguages", "python,sql" },
            { "spark.databricks.cluster.profile", "serverless" },
        },
        CustomTags = 
        {
            { "ResourceClass", "Serverless" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := databricks.NewCluster(ctx, "cluster_with_table_access_control", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Shared High-Concurrency"),
			SparkVersion:           pulumi.Any(latestLts.Id),
			NodeTypeId:             pulumi.Any(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			SparkConf: pulumi.StringMap{
				"spark.databricks.repl.allowedLanguages": pulumi.String("python,sql"),
				"spark.databricks.cluster.profile":       pulumi.String("serverless"),
			},
			CustomTags: pulumi.StringMap{
				"ResourceClass": pulumi.String("Serverless"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var clusterWithTableAccessControl = new Cluster("clusterWithTableAccessControl", ClusterArgs.builder()
            .clusterName("Shared High-Concurrency")
            .sparkVersion(latestLts.id())
            .nodeTypeId(smallest.id())
            .autoterminationMinutes(20)
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.repl.allowedLanguages", "python,sql"),
                Map.entry("spark.databricks.cluster.profile", "serverless")
            ))
            .customTags(Map.of("ResourceClass", "Serverless"))
            .build());

    }
}
resources:
  clusterWithTableAccessControl:
    type: databricks:Cluster
    name: cluster_with_table_access_control
    properties:
      clusterName: Shared High-Concurrency
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      sparkConf:
        spark.databricks.repl.allowedLanguages: python,sql
        spark.databricks.cluster.profile: serverless
      customTags:
        ResourceClass: Serverless
dataSecurityMode String
Select the security features of the cluster (see API docs for full list of values). Unity Catalog requires SINGLE_USER or USER_ISOLATION mode. LEGACY_PASSTHROUGH for passthrough cluster and LEGACY_TABLE_ACL for Table ACL cluster. If omitted, default security features are enabled. To disable security features use NONE or legacy mode NO_ISOLATION. If kind is specified, then the following options are available:

  • DATA_SECURITY_MODE_AUTO: Databricks will choose the most appropriate access mode depending on your compute configuration.
  • DATA_SECURITY_MODE_STANDARD: Alias for USER_ISOLATION.
  • DATA_SECURITY_MODE_DEDICATED: Alias for SINGLE_USER.
defaultTags Map<String>
(map) Tags that are added by Databricks by default, regardless of any custom_tags that may have been added. These include: Vendor: Databricks, Creator: <username_of_creator>, ClusterName: <name_of_cluster>, ClusterId: <id_of_cluster>, Name: , and any workspace and pool tags.
dockerImage Property Map
driverInstancePoolId String
similar to instance_pool_id, but for driver node. If omitted, and instance_pool_id is specified, then the driver will be allocated from that pool.
driverNodeTypeId String
The node type of the Spark driver. This field is optional; if unset, API will set the driver node type to the same value as node_type_id defined above.
enableElasticDisk Boolean
If you don’t want to allocate a fixed number of EBS volumes at cluster creation time, use autoscaling local storage. With autoscaling local storage, Databricks monitors the amount of free disk space available on your cluster’s Spark workers. If a worker begins to run too low on disk, Databricks automatically attaches a new EBS volume to the worker before it runs out of disk space. EBS volumes are attached up to a limit of 5 TB of total disk space per instance (including the instance’s local storage). To scale down EBS usage, make sure you have autotermination_minutes and autoscale attributes set. More documentation available at cluster configuration page.
enableLocalDiskEncryption Boolean
Some instance types you use to run clusters may have locally attached disks. Databricks may store shuffle data or temporary data on these locally attached disks. To ensure that all data at rest is encrypted for all storage types, including shuffle data stored temporarily on your cluster’s local disks, you can enable local disk encryption. When local disk encryption is enabled, Databricks generates an encryption key locally unique to each cluster node and uses it to encrypt all data stored on local disks. The scope of the key is local to each cluster node and is destroyed along with the cluster node itself. During its lifetime, the key resides in memory for encryption and decryption and is stored encrypted on the disk. Your workloads may run more slowly because of the performance impact of reading and writing encrypted data to and from local volumes. This feature is not available for all Azure Databricks subscriptions. Contact your Microsoft or Databricks account representative to request access.
gcpAttributes Property Map
idempotencyToken Changes to this property will trigger replacement. String
An optional token to guarantee the idempotency of cluster creation requests. If an active cluster with the provided token already exists, the request will not create a new cluster, but it will return the existing running cluster's ID instead. If you specify the idempotency token, upon failure, you can retry until the request succeeds. Databricks platform guarantees to launch exactly one cluster with that idempotency token. This token should have at most 64 characters.
initScripts List<Property Map>
instancePoolId String
To reduce cluster start time, you can attach a cluster to a predefined pool of idle instances. When attached to a pool, a cluster allocates its driver and worker nodes from the pool. If the pool does not have sufficient idle resources to accommodate the cluster’s request, it expands by allocating new instances from the instance provider. When an attached cluster changes its state to TERMINATED, the instances it used are returned to the pool and reused by a different cluster.
isPinned Boolean
boolean value specifying if the cluster is pinned (not pinned by default). You must be a Databricks administrator to use this. The pinned clusters' maximum number is limited to 100, so apply may fail if you have more than that (this number may change over time, so check Databricks documentation for actual number).
isSingleNode Boolean
When set to true, Databricks will automatically set single node related custom_tags, spark_conf, and num_workers.
kind String
The kind of compute described by this compute specification. Possible values (see API docs for full list): CLASSIC_PREVIEW (if corresponding public preview is enabled).
libraries List<Property Map>
noWait Boolean

If true, the provider will not wait for the cluster to reach RUNNING state when creating the cluster, allowing cluster creation and library installation to continue asynchronously. Defaults to false (the provider will wait for cluster creation and library installation to succeed).

The following example demonstrates how to create an autoscaling cluster with Delta Cache enabled:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const smallest = databricks.getNodeType({ localDisk: true, }); const latestLts = databricks.getSparkVersion({ longTermSupport: true, }); const sharedAutoscaling = new databricks.Cluster("shared_autoscaling", { clusterName: "Shared Autoscaling", sparkVersion: latestLts.then(latestLts => latestLts.id), nodeTypeId: smallest.then(smallest => smallest.id), autoterminationMinutes: 20, autoscale: { minWorkers: 1, maxWorkers: 50, }, sparkConf: { "spark.databricks.io.cache.enabled": "true", "spark.databricks.io.cache.maxDiskUsage": "50g", "spark.databricks.io.cache.maxMetaDataCache": "1g", }, });

import pulumi
import pulumi_databricks as databricks

smallest = databricks.get_node_type(local_disk=True)
latest_lts = databricks.get_spark_version(long_term_support=True)
shared_autoscaling = databricks.Cluster("shared_autoscaling",
    cluster_name="Shared Autoscaling",
    spark_version=latest_lts.id,
    node_type_id=smallest.id,
    autotermination_minutes=20,
    autoscale={
        "min_workers": 1,
        "max_workers": 50,
    },
    spark_conf={
        "spark.databricks.io.cache.enabled": "true",
        "spark.databricks.io.cache.maxDiskUsage": "50g",
        "spark.databricks.io.cache.maxMetaDataCache": "1g",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var smallest = Databricks.GetNodeType.Invoke(new()
    {
        LocalDisk = true,
    });

    var latestLts = Databricks.GetSparkVersion.Invoke(new()
    {
        LongTermSupport = true,
    });

    var sharedAutoscaling = new Databricks.Cluster("shared_autoscaling", new()
    {
        ClusterName = "Shared Autoscaling",
        SparkVersion = latestLts.Apply(getSparkVersionResult => getSparkVersionResult.Id),
        NodeTypeId = smallest.Apply(getNodeTypeResult => getNodeTypeResult.Id),
        AutoterminationMinutes = 20,
        Autoscale = new Databricks.Inputs.ClusterAutoscaleArgs
        {
            MinWorkers = 1,
            MaxWorkers = 50,
        },
        SparkConf = 
        {
            { "spark.databricks.io.cache.enabled", "true" },
            { "spark.databricks.io.cache.maxDiskUsage", "50g" },
            { "spark.databricks.io.cache.maxMetaDataCache", "1g" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		smallest, err := databricks.GetNodeType(ctx, &databricks.GetNodeTypeArgs{
			LocalDisk: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		latestLts, err := databricks.GetSparkVersion(ctx, &databricks.GetSparkVersionArgs{
			LongTermSupport: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		_, err = databricks.NewCluster(ctx, "shared_autoscaling", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Shared Autoscaling"),
			SparkVersion:           pulumi.String(latestLts.Id),
			NodeTypeId:             pulumi.String(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			Autoscale: &databricks.ClusterAutoscaleArgs{
				MinWorkers: pulumi.Int(1),
				MaxWorkers: pulumi.Int(50),
			},
			SparkConf: pulumi.StringMap{
				"spark.databricks.io.cache.enabled":          pulumi.String("true"),
				"spark.databricks.io.cache.maxDiskUsage":     pulumi.String("50g"),
				"spark.databricks.io.cache.maxMetaDataCache": pulumi.String("1g"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.DatabricksFunctions;
import com.pulumi.databricks.inputs.GetNodeTypeArgs;
import com.pulumi.databricks.inputs.GetSparkVersionArgs;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterAutoscaleArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        final var smallest = DatabricksFunctions.getNodeType(GetNodeTypeArgs.builder()
            .localDisk(true)
            .build());

        final var latestLts = DatabricksFunctions.getSparkVersion(GetSparkVersionArgs.builder()
            .longTermSupport(true)
            .build());

        var sharedAutoscaling = new Cluster("sharedAutoscaling", ClusterArgs.builder()
            .clusterName("Shared Autoscaling")
            .sparkVersion(latestLts.applyValue(getSparkVersionResult -> getSparkVersionResult.id()))
            .nodeTypeId(smallest.applyValue(getNodeTypeResult -> getNodeTypeResult.id()))
            .autoterminationMinutes(20)
            .autoscale(ClusterAutoscaleArgs.builder()
                .minWorkers(1)
                .maxWorkers(50)
                .build())
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.io.cache.enabled", true),
                Map.entry("spark.databricks.io.cache.maxDiskUsage", "50g"),
                Map.entry("spark.databricks.io.cache.maxMetaDataCache", "1g")
            ))
            .build());

    }
}
resources:
  sharedAutoscaling:
    type: databricks:Cluster
    name: shared_autoscaling
    properties:
      clusterName: Shared Autoscaling
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      autoscale:
        minWorkers: 1
        maxWorkers: 50
      sparkConf:
        spark.databricks.io.cache.enabled: true
        spark.databricks.io.cache.maxDiskUsage: 50g
        spark.databricks.io.cache.maxMetaDataCache: 1g
variables:
  smallest:
    fn::invoke:
      function: databricks:getNodeType
      arguments:
        localDisk: true
  latestLts:
    fn::invoke:
      function: databricks:getSparkVersion
      arguments:
        longTermSupport: true
nodeTypeId String
Any supported databricks.getNodeType id. If instance_pool_id is specified, this field is not needed.
numWorkers Number
Number of worker nodes that this cluster should have. A cluster has one Spark driver and num_workers executors for a total of num_workers + 1 Spark nodes.
policyId String
Identifier of Cluster Policy to validate cluster and preset certain defaults. The primary use for cluster policies is to allow users to create policy-scoped clusters via UI rather than sharing configuration for API-created clusters. For example, when you specify policy_id of external metastore policy, you still have to fill in relevant keys for spark_conf. If relevant fields aren't filled in, then it will cause the configuration drift detected on each plan/apply, and Pulumi will try to apply the detected changes.
runtimeEngine String
The type of runtime engine to use. If not specified, the runtime engine type is inferred based on the spark_version value. Allowed values include: PHOTON, STANDARD.
singleUserName String
The optional user name of the user (or group name if kind if specified) to assign to an interactive cluster. This field is required when using data_security_mode set to SINGLE_USER or AAD Passthrough for Azure Data Lake Storage (ADLS) with a single-user cluster (i.e., not high-concurrency clusters).
sparkConf Map<String>
should have following items:

  • spark.databricks.repl.allowedLanguages set to a list of supported languages, for example: python,sql, or python,sql,r. Scala is not supported!
  • spark.databricks.cluster.profile set to serverless
sparkEnvVars Map<String>
Map with environment variable key-value pairs to fine-tune Spark clusters. Key-value pairs of the form (X,Y) are exported (i.e., X='Y') while launching the driver and workers.
sparkVersion String
Runtime version of the cluster. Any supported databricks.getSparkVersion id. We advise using Cluster Policies to restrict the list of versions for simplicity while maintaining enough control.
sshPublicKeys List<String>
SSH public key contents that will be added to each Spark node in this cluster. The corresponding private keys can be used to login with the user name ubuntu on port 2200. You can specify up to 10 keys.
state String
(string) State of the cluster.
url String
useMlRuntime Boolean
Whenever ML runtime should be selected or not. Actual runtime is determined by spark_version (DBR release), this field use_ml_runtime, and whether node_type_id is GPU node or not.
workloadType Property Map

Supporting Types

ClusterAutoscale
, ClusterAutoscaleArgs

MaxWorkers int

The maximum number of workers to which the cluster can scale up when overloaded. max_workers must be strictly greater than min_workers.

When using a Single Node cluster, num_workers needs to be 0. It can be set to 0 explicitly, or simply not specified, as it defaults to 0. When num_workers is 0, provider checks for presence of the required Spark configurations:

  • spark.master must have prefix local, like local[*]
  • spark.databricks.cluster.profile must have value singleNode

and also custom_tag entry:

  • "ResourceClass" = "SingleNode"

The following example demonstrates how to create an single node cluster:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const smallest = databricks.getNodeType({ localDisk: true, }); const latestLts = databricks.getSparkVersion({ longTermSupport: true, }); const singleNode = new databricks.Cluster("single_node", { clusterName: "Single Node", sparkVersion: latestLts.then(latestLts => latestLts.id), nodeTypeId: smallest.then(smallest => smallest.id), autoterminationMinutes: 20, sparkConf: { "spark.databricks.cluster.profile": "singleNode", "spark.master": "local[*]", }, customTags: { ResourceClass: "SingleNode", }, });

import pulumi
import pulumi_databricks as databricks

smallest = databricks.get_node_type(local_disk=True)
latest_lts = databricks.get_spark_version(long_term_support=True)
single_node = databricks.Cluster("single_node",
    cluster_name="Single Node",
    spark_version=latest_lts.id,
    node_type_id=smallest.id,
    autotermination_minutes=20,
    spark_conf={
        "spark.databricks.cluster.profile": "singleNode",
        "spark.master": "local[*]",
    },
    custom_tags={
        "ResourceClass": "SingleNode",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var smallest = Databricks.GetNodeType.Invoke(new()
    {
        LocalDisk = true,
    });

    var latestLts = Databricks.GetSparkVersion.Invoke(new()
    {
        LongTermSupport = true,
    });

    var singleNode = new Databricks.Cluster("single_node", new()
    {
        ClusterName = "Single Node",
        SparkVersion = latestLts.Apply(getSparkVersionResult => getSparkVersionResult.Id),
        NodeTypeId = smallest.Apply(getNodeTypeResult => getNodeTypeResult.Id),
        AutoterminationMinutes = 20,
        SparkConf = 
        {
            { "spark.databricks.cluster.profile", "singleNode" },
            { "spark.master", "local[*]" },
        },
        CustomTags = 
        {
            { "ResourceClass", "SingleNode" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		smallest, err := databricks.GetNodeType(ctx, &databricks.GetNodeTypeArgs{
			LocalDisk: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		latestLts, err := databricks.GetSparkVersion(ctx, &databricks.GetSparkVersionArgs{
			LongTermSupport: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		_, err = databricks.NewCluster(ctx, "single_node", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Single Node"),
			SparkVersion:           pulumi.String(latestLts.Id),
			NodeTypeId:             pulumi.String(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			SparkConf: pulumi.StringMap{
				"spark.databricks.cluster.profile": pulumi.String("singleNode"),
				"spark.master":                     pulumi.String("local[*]"),
			},
			CustomTags: pulumi.StringMap{
				"ResourceClass": pulumi.String("SingleNode"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.DatabricksFunctions;
import com.pulumi.databricks.inputs.GetNodeTypeArgs;
import com.pulumi.databricks.inputs.GetSparkVersionArgs;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        final var smallest = DatabricksFunctions.getNodeType(GetNodeTypeArgs.builder()
            .localDisk(true)
            .build());

        final var latestLts = DatabricksFunctions.getSparkVersion(GetSparkVersionArgs.builder()
            .longTermSupport(true)
            .build());

        var singleNode = new Cluster("singleNode", ClusterArgs.builder()
            .clusterName("Single Node")
            .sparkVersion(latestLts.applyValue(getSparkVersionResult -> getSparkVersionResult.id()))
            .nodeTypeId(smallest.applyValue(getNodeTypeResult -> getNodeTypeResult.id()))
            .autoterminationMinutes(20)
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.cluster.profile", "singleNode"),
                Map.entry("spark.master", "local[*]")
            ))
            .customTags(Map.of("ResourceClass", "SingleNode"))
            .build());

    }
}
resources:
  singleNode:
    type: databricks:Cluster
    name: single_node
    properties:
      clusterName: Single Node
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      sparkConf:
        spark.databricks.cluster.profile: singleNode
        spark.master: local[*]
      customTags:
        ResourceClass: SingleNode
variables:
  smallest:
    fn::invoke:
      function: databricks:getNodeType
      arguments:
        localDisk: true
  latestLts:
    fn::invoke:
      function: databricks:getSparkVersion
      arguments:
        longTermSupport: true
MinWorkers int
The minimum number of workers to which the cluster can scale down when underutilized. It is also the initial number of workers the cluster will have after creation.
MaxWorkers int

The maximum number of workers to which the cluster can scale up when overloaded. max_workers must be strictly greater than min_workers.

When using a Single Node cluster, num_workers needs to be 0. It can be set to 0 explicitly, or simply not specified, as it defaults to 0. When num_workers is 0, provider checks for presence of the required Spark configurations:

  • spark.master must have prefix local, like local[*]
  • spark.databricks.cluster.profile must have value singleNode

and also custom_tag entry:

  • "ResourceClass" = "SingleNode"

The following example demonstrates how to create an single node cluster:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const smallest = databricks.getNodeType({ localDisk: true, }); const latestLts = databricks.getSparkVersion({ longTermSupport: true, }); const singleNode = new databricks.Cluster("single_node", { clusterName: "Single Node", sparkVersion: latestLts.then(latestLts => latestLts.id), nodeTypeId: smallest.then(smallest => smallest.id), autoterminationMinutes: 20, sparkConf: { "spark.databricks.cluster.profile": "singleNode", "spark.master": "local[*]", }, customTags: { ResourceClass: "SingleNode", }, });

import pulumi
import pulumi_databricks as databricks

smallest = databricks.get_node_type(local_disk=True)
latest_lts = databricks.get_spark_version(long_term_support=True)
single_node = databricks.Cluster("single_node",
    cluster_name="Single Node",
    spark_version=latest_lts.id,
    node_type_id=smallest.id,
    autotermination_minutes=20,
    spark_conf={
        "spark.databricks.cluster.profile": "singleNode",
        "spark.master": "local[*]",
    },
    custom_tags={
        "ResourceClass": "SingleNode",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var smallest = Databricks.GetNodeType.Invoke(new()
    {
        LocalDisk = true,
    });

    var latestLts = Databricks.GetSparkVersion.Invoke(new()
    {
        LongTermSupport = true,
    });

    var singleNode = new Databricks.Cluster("single_node", new()
    {
        ClusterName = "Single Node",
        SparkVersion = latestLts.Apply(getSparkVersionResult => getSparkVersionResult.Id),
        NodeTypeId = smallest.Apply(getNodeTypeResult => getNodeTypeResult.Id),
        AutoterminationMinutes = 20,
        SparkConf = 
        {
            { "spark.databricks.cluster.profile", "singleNode" },
            { "spark.master", "local[*]" },
        },
        CustomTags = 
        {
            { "ResourceClass", "SingleNode" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		smallest, err := databricks.GetNodeType(ctx, &databricks.GetNodeTypeArgs{
			LocalDisk: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		latestLts, err := databricks.GetSparkVersion(ctx, &databricks.GetSparkVersionArgs{
			LongTermSupport: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		_, err = databricks.NewCluster(ctx, "single_node", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Single Node"),
			SparkVersion:           pulumi.String(latestLts.Id),
			NodeTypeId:             pulumi.String(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			SparkConf: pulumi.StringMap{
				"spark.databricks.cluster.profile": pulumi.String("singleNode"),
				"spark.master":                     pulumi.String("local[*]"),
			},
			CustomTags: pulumi.StringMap{
				"ResourceClass": pulumi.String("SingleNode"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.DatabricksFunctions;
import com.pulumi.databricks.inputs.GetNodeTypeArgs;
import com.pulumi.databricks.inputs.GetSparkVersionArgs;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        final var smallest = DatabricksFunctions.getNodeType(GetNodeTypeArgs.builder()
            .localDisk(true)
            .build());

        final var latestLts = DatabricksFunctions.getSparkVersion(GetSparkVersionArgs.builder()
            .longTermSupport(true)
            .build());

        var singleNode = new Cluster("singleNode", ClusterArgs.builder()
            .clusterName("Single Node")
            .sparkVersion(latestLts.applyValue(getSparkVersionResult -> getSparkVersionResult.id()))
            .nodeTypeId(smallest.applyValue(getNodeTypeResult -> getNodeTypeResult.id()))
            .autoterminationMinutes(20)
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.cluster.profile", "singleNode"),
                Map.entry("spark.master", "local[*]")
            ))
            .customTags(Map.of("ResourceClass", "SingleNode"))
            .build());

    }
}
resources:
  singleNode:
    type: databricks:Cluster
    name: single_node
    properties:
      clusterName: Single Node
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      sparkConf:
        spark.databricks.cluster.profile: singleNode
        spark.master: local[*]
      customTags:
        ResourceClass: SingleNode
variables:
  smallest:
    fn::invoke:
      function: databricks:getNodeType
      arguments:
        localDisk: true
  latestLts:
    fn::invoke:
      function: databricks:getSparkVersion
      arguments:
        longTermSupport: true
MinWorkers int
The minimum number of workers to which the cluster can scale down when underutilized. It is also the initial number of workers the cluster will have after creation.
maxWorkers Integer

The maximum number of workers to which the cluster can scale up when overloaded. max_workers must be strictly greater than min_workers.

When using a Single Node cluster, num_workers needs to be 0. It can be set to 0 explicitly, or simply not specified, as it defaults to 0. When num_workers is 0, provider checks for presence of the required Spark configurations:

  • spark.master must have prefix local, like local[*]
  • spark.databricks.cluster.profile must have value singleNode

and also custom_tag entry:

  • "ResourceClass" = "SingleNode"

The following example demonstrates how to create an single node cluster:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const smallest = databricks.getNodeType({ localDisk: true, }); const latestLts = databricks.getSparkVersion({ longTermSupport: true, }); const singleNode = new databricks.Cluster("single_node", { clusterName: "Single Node", sparkVersion: latestLts.then(latestLts => latestLts.id), nodeTypeId: smallest.then(smallest => smallest.id), autoterminationMinutes: 20, sparkConf: { "spark.databricks.cluster.profile": "singleNode", "spark.master": "local[*]", }, customTags: { ResourceClass: "SingleNode", }, });

import pulumi
import pulumi_databricks as databricks

smallest = databricks.get_node_type(local_disk=True)
latest_lts = databricks.get_spark_version(long_term_support=True)
single_node = databricks.Cluster("single_node",
    cluster_name="Single Node",
    spark_version=latest_lts.id,
    node_type_id=smallest.id,
    autotermination_minutes=20,
    spark_conf={
        "spark.databricks.cluster.profile": "singleNode",
        "spark.master": "local[*]",
    },
    custom_tags={
        "ResourceClass": "SingleNode",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var smallest = Databricks.GetNodeType.Invoke(new()
    {
        LocalDisk = true,
    });

    var latestLts = Databricks.GetSparkVersion.Invoke(new()
    {
        LongTermSupport = true,
    });

    var singleNode = new Databricks.Cluster("single_node", new()
    {
        ClusterName = "Single Node",
        SparkVersion = latestLts.Apply(getSparkVersionResult => getSparkVersionResult.Id),
        NodeTypeId = smallest.Apply(getNodeTypeResult => getNodeTypeResult.Id),
        AutoterminationMinutes = 20,
        SparkConf = 
        {
            { "spark.databricks.cluster.profile", "singleNode" },
            { "spark.master", "local[*]" },
        },
        CustomTags = 
        {
            { "ResourceClass", "SingleNode" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		smallest, err := databricks.GetNodeType(ctx, &databricks.GetNodeTypeArgs{
			LocalDisk: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		latestLts, err := databricks.GetSparkVersion(ctx, &databricks.GetSparkVersionArgs{
			LongTermSupport: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		_, err = databricks.NewCluster(ctx, "single_node", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Single Node"),
			SparkVersion:           pulumi.String(latestLts.Id),
			NodeTypeId:             pulumi.String(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			SparkConf: pulumi.StringMap{
				"spark.databricks.cluster.profile": pulumi.String("singleNode"),
				"spark.master":                     pulumi.String("local[*]"),
			},
			CustomTags: pulumi.StringMap{
				"ResourceClass": pulumi.String("SingleNode"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.DatabricksFunctions;
import com.pulumi.databricks.inputs.GetNodeTypeArgs;
import com.pulumi.databricks.inputs.GetSparkVersionArgs;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        final var smallest = DatabricksFunctions.getNodeType(GetNodeTypeArgs.builder()
            .localDisk(true)
            .build());

        final var latestLts = DatabricksFunctions.getSparkVersion(GetSparkVersionArgs.builder()
            .longTermSupport(true)
            .build());

        var singleNode = new Cluster("singleNode", ClusterArgs.builder()
            .clusterName("Single Node")
            .sparkVersion(latestLts.applyValue(getSparkVersionResult -> getSparkVersionResult.id()))
            .nodeTypeId(smallest.applyValue(getNodeTypeResult -> getNodeTypeResult.id()))
            .autoterminationMinutes(20)
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.cluster.profile", "singleNode"),
                Map.entry("spark.master", "local[*]")
            ))
            .customTags(Map.of("ResourceClass", "SingleNode"))
            .build());

    }
}
resources:
  singleNode:
    type: databricks:Cluster
    name: single_node
    properties:
      clusterName: Single Node
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      sparkConf:
        spark.databricks.cluster.profile: singleNode
        spark.master: local[*]
      customTags:
        ResourceClass: SingleNode
variables:
  smallest:
    fn::invoke:
      function: databricks:getNodeType
      arguments:
        localDisk: true
  latestLts:
    fn::invoke:
      function: databricks:getSparkVersion
      arguments:
        longTermSupport: true
minWorkers Integer
The minimum number of workers to which the cluster can scale down when underutilized. It is also the initial number of workers the cluster will have after creation.
maxWorkers number

The maximum number of workers to which the cluster can scale up when overloaded. max_workers must be strictly greater than min_workers.

When using a Single Node cluster, num_workers needs to be 0. It can be set to 0 explicitly, or simply not specified, as it defaults to 0. When num_workers is 0, provider checks for presence of the required Spark configurations:

  • spark.master must have prefix local, like local[*]
  • spark.databricks.cluster.profile must have value singleNode

and also custom_tag entry:

  • "ResourceClass" = "SingleNode"

The following example demonstrates how to create an single node cluster:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const smallest = databricks.getNodeType({ localDisk: true, }); const latestLts = databricks.getSparkVersion({ longTermSupport: true, }); const singleNode = new databricks.Cluster("single_node", { clusterName: "Single Node", sparkVersion: latestLts.then(latestLts => latestLts.id), nodeTypeId: smallest.then(smallest => smallest.id), autoterminationMinutes: 20, sparkConf: { "spark.databricks.cluster.profile": "singleNode", "spark.master": "local[*]", }, customTags: { ResourceClass: "SingleNode", }, });

import pulumi
import pulumi_databricks as databricks

smallest = databricks.get_node_type(local_disk=True)
latest_lts = databricks.get_spark_version(long_term_support=True)
single_node = databricks.Cluster("single_node",
    cluster_name="Single Node",
    spark_version=latest_lts.id,
    node_type_id=smallest.id,
    autotermination_minutes=20,
    spark_conf={
        "spark.databricks.cluster.profile": "singleNode",
        "spark.master": "local[*]",
    },
    custom_tags={
        "ResourceClass": "SingleNode",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var smallest = Databricks.GetNodeType.Invoke(new()
    {
        LocalDisk = true,
    });

    var latestLts = Databricks.GetSparkVersion.Invoke(new()
    {
        LongTermSupport = true,
    });

    var singleNode = new Databricks.Cluster("single_node", new()
    {
        ClusterName = "Single Node",
        SparkVersion = latestLts.Apply(getSparkVersionResult => getSparkVersionResult.Id),
        NodeTypeId = smallest.Apply(getNodeTypeResult => getNodeTypeResult.Id),
        AutoterminationMinutes = 20,
        SparkConf = 
        {
            { "spark.databricks.cluster.profile", "singleNode" },
            { "spark.master", "local[*]" },
        },
        CustomTags = 
        {
            { "ResourceClass", "SingleNode" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		smallest, err := databricks.GetNodeType(ctx, &databricks.GetNodeTypeArgs{
			LocalDisk: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		latestLts, err := databricks.GetSparkVersion(ctx, &databricks.GetSparkVersionArgs{
			LongTermSupport: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		_, err = databricks.NewCluster(ctx, "single_node", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Single Node"),
			SparkVersion:           pulumi.String(latestLts.Id),
			NodeTypeId:             pulumi.String(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			SparkConf: pulumi.StringMap{
				"spark.databricks.cluster.profile": pulumi.String("singleNode"),
				"spark.master":                     pulumi.String("local[*]"),
			},
			CustomTags: pulumi.StringMap{
				"ResourceClass": pulumi.String("SingleNode"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.DatabricksFunctions;
import com.pulumi.databricks.inputs.GetNodeTypeArgs;
import com.pulumi.databricks.inputs.GetSparkVersionArgs;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        final var smallest = DatabricksFunctions.getNodeType(GetNodeTypeArgs.builder()
            .localDisk(true)
            .build());

        final var latestLts = DatabricksFunctions.getSparkVersion(GetSparkVersionArgs.builder()
            .longTermSupport(true)
            .build());

        var singleNode = new Cluster("singleNode", ClusterArgs.builder()
            .clusterName("Single Node")
            .sparkVersion(latestLts.applyValue(getSparkVersionResult -> getSparkVersionResult.id()))
            .nodeTypeId(smallest.applyValue(getNodeTypeResult -> getNodeTypeResult.id()))
            .autoterminationMinutes(20)
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.cluster.profile", "singleNode"),
                Map.entry("spark.master", "local[*]")
            ))
            .customTags(Map.of("ResourceClass", "SingleNode"))
            .build());

    }
}
resources:
  singleNode:
    type: databricks:Cluster
    name: single_node
    properties:
      clusterName: Single Node
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      sparkConf:
        spark.databricks.cluster.profile: singleNode
        spark.master: local[*]
      customTags:
        ResourceClass: SingleNode
variables:
  smallest:
    fn::invoke:
      function: databricks:getNodeType
      arguments:
        localDisk: true
  latestLts:
    fn::invoke:
      function: databricks:getSparkVersion
      arguments:
        longTermSupport: true
minWorkers number
The minimum number of workers to which the cluster can scale down when underutilized. It is also the initial number of workers the cluster will have after creation.
max_workers int

The maximum number of workers to which the cluster can scale up when overloaded. max_workers must be strictly greater than min_workers.

When using a Single Node cluster, num_workers needs to be 0. It can be set to 0 explicitly, or simply not specified, as it defaults to 0. When num_workers is 0, provider checks for presence of the required Spark configurations:

  • spark.master must have prefix local, like local[*]
  • spark.databricks.cluster.profile must have value singleNode

and also custom_tag entry:

  • "ResourceClass" = "SingleNode"

The following example demonstrates how to create an single node cluster:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const smallest = databricks.getNodeType({ localDisk: true, }); const latestLts = databricks.getSparkVersion({ longTermSupport: true, }); const singleNode = new databricks.Cluster("single_node", { clusterName: "Single Node", sparkVersion: latestLts.then(latestLts => latestLts.id), nodeTypeId: smallest.then(smallest => smallest.id), autoterminationMinutes: 20, sparkConf: { "spark.databricks.cluster.profile": "singleNode", "spark.master": "local[*]", }, customTags: { ResourceClass: "SingleNode", }, });

import pulumi
import pulumi_databricks as databricks

smallest = databricks.get_node_type(local_disk=True)
latest_lts = databricks.get_spark_version(long_term_support=True)
single_node = databricks.Cluster("single_node",
    cluster_name="Single Node",
    spark_version=latest_lts.id,
    node_type_id=smallest.id,
    autotermination_minutes=20,
    spark_conf={
        "spark.databricks.cluster.profile": "singleNode",
        "spark.master": "local[*]",
    },
    custom_tags={
        "ResourceClass": "SingleNode",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var smallest = Databricks.GetNodeType.Invoke(new()
    {
        LocalDisk = true,
    });

    var latestLts = Databricks.GetSparkVersion.Invoke(new()
    {
        LongTermSupport = true,
    });

    var singleNode = new Databricks.Cluster("single_node", new()
    {
        ClusterName = "Single Node",
        SparkVersion = latestLts.Apply(getSparkVersionResult => getSparkVersionResult.Id),
        NodeTypeId = smallest.Apply(getNodeTypeResult => getNodeTypeResult.Id),
        AutoterminationMinutes = 20,
        SparkConf = 
        {
            { "spark.databricks.cluster.profile", "singleNode" },
            { "spark.master", "local[*]" },
        },
        CustomTags = 
        {
            { "ResourceClass", "SingleNode" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		smallest, err := databricks.GetNodeType(ctx, &databricks.GetNodeTypeArgs{
			LocalDisk: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		latestLts, err := databricks.GetSparkVersion(ctx, &databricks.GetSparkVersionArgs{
			LongTermSupport: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		_, err = databricks.NewCluster(ctx, "single_node", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Single Node"),
			SparkVersion:           pulumi.String(latestLts.Id),
			NodeTypeId:             pulumi.String(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			SparkConf: pulumi.StringMap{
				"spark.databricks.cluster.profile": pulumi.String("singleNode"),
				"spark.master":                     pulumi.String("local[*]"),
			},
			CustomTags: pulumi.StringMap{
				"ResourceClass": pulumi.String("SingleNode"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.DatabricksFunctions;
import com.pulumi.databricks.inputs.GetNodeTypeArgs;
import com.pulumi.databricks.inputs.GetSparkVersionArgs;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        final var smallest = DatabricksFunctions.getNodeType(GetNodeTypeArgs.builder()
            .localDisk(true)
            .build());

        final var latestLts = DatabricksFunctions.getSparkVersion(GetSparkVersionArgs.builder()
            .longTermSupport(true)
            .build());

        var singleNode = new Cluster("singleNode", ClusterArgs.builder()
            .clusterName("Single Node")
            .sparkVersion(latestLts.applyValue(getSparkVersionResult -> getSparkVersionResult.id()))
            .nodeTypeId(smallest.applyValue(getNodeTypeResult -> getNodeTypeResult.id()))
            .autoterminationMinutes(20)
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.cluster.profile", "singleNode"),
                Map.entry("spark.master", "local[*]")
            ))
            .customTags(Map.of("ResourceClass", "SingleNode"))
            .build());

    }
}
resources:
  singleNode:
    type: databricks:Cluster
    name: single_node
    properties:
      clusterName: Single Node
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      sparkConf:
        spark.databricks.cluster.profile: singleNode
        spark.master: local[*]
      customTags:
        ResourceClass: SingleNode
variables:
  smallest:
    fn::invoke:
      function: databricks:getNodeType
      arguments:
        localDisk: true
  latestLts:
    fn::invoke:
      function: databricks:getSparkVersion
      arguments:
        longTermSupport: true
min_workers int
The minimum number of workers to which the cluster can scale down when underutilized. It is also the initial number of workers the cluster will have after creation.
maxWorkers Number

The maximum number of workers to which the cluster can scale up when overloaded. max_workers must be strictly greater than min_workers.

When using a Single Node cluster, num_workers needs to be 0. It can be set to 0 explicitly, or simply not specified, as it defaults to 0. When num_workers is 0, provider checks for presence of the required Spark configurations:

  • spark.master must have prefix local, like local[*]
  • spark.databricks.cluster.profile must have value singleNode

and also custom_tag entry:

  • "ResourceClass" = "SingleNode"

The following example demonstrates how to create an single node cluster:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const smallest = databricks.getNodeType({ localDisk: true, }); const latestLts = databricks.getSparkVersion({ longTermSupport: true, }); const singleNode = new databricks.Cluster("single_node", { clusterName: "Single Node", sparkVersion: latestLts.then(latestLts => latestLts.id), nodeTypeId: smallest.then(smallest => smallest.id), autoterminationMinutes: 20, sparkConf: { "spark.databricks.cluster.profile": "singleNode", "spark.master": "local[*]", }, customTags: { ResourceClass: "SingleNode", }, });

import pulumi
import pulumi_databricks as databricks

smallest = databricks.get_node_type(local_disk=True)
latest_lts = databricks.get_spark_version(long_term_support=True)
single_node = databricks.Cluster("single_node",
    cluster_name="Single Node",
    spark_version=latest_lts.id,
    node_type_id=smallest.id,
    autotermination_minutes=20,
    spark_conf={
        "spark.databricks.cluster.profile": "singleNode",
        "spark.master": "local[*]",
    },
    custom_tags={
        "ResourceClass": "SingleNode",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var smallest = Databricks.GetNodeType.Invoke(new()
    {
        LocalDisk = true,
    });

    var latestLts = Databricks.GetSparkVersion.Invoke(new()
    {
        LongTermSupport = true,
    });

    var singleNode = new Databricks.Cluster("single_node", new()
    {
        ClusterName = "Single Node",
        SparkVersion = latestLts.Apply(getSparkVersionResult => getSparkVersionResult.Id),
        NodeTypeId = smallest.Apply(getNodeTypeResult => getNodeTypeResult.Id),
        AutoterminationMinutes = 20,
        SparkConf = 
        {
            { "spark.databricks.cluster.profile", "singleNode" },
            { "spark.master", "local[*]" },
        },
        CustomTags = 
        {
            { "ResourceClass", "SingleNode" },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		smallest, err := databricks.GetNodeType(ctx, &databricks.GetNodeTypeArgs{
			LocalDisk: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		latestLts, err := databricks.GetSparkVersion(ctx, &databricks.GetSparkVersionArgs{
			LongTermSupport: pulumi.BoolRef(true),
		}, nil)
		if err != nil {
			return err
		}
		_, err = databricks.NewCluster(ctx, "single_node", &databricks.ClusterArgs{
			ClusterName:            pulumi.String("Single Node"),
			SparkVersion:           pulumi.String(latestLts.Id),
			NodeTypeId:             pulumi.String(smallest.Id),
			AutoterminationMinutes: pulumi.Int(20),
			SparkConf: pulumi.StringMap{
				"spark.databricks.cluster.profile": pulumi.String("singleNode"),
				"spark.master":                     pulumi.String("local[*]"),
			},
			CustomTags: pulumi.StringMap{
				"ResourceClass": pulumi.String("SingleNode"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.DatabricksFunctions;
import com.pulumi.databricks.inputs.GetNodeTypeArgs;
import com.pulumi.databricks.inputs.GetSparkVersionArgs;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        final var smallest = DatabricksFunctions.getNodeType(GetNodeTypeArgs.builder()
            .localDisk(true)
            .build());

        final var latestLts = DatabricksFunctions.getSparkVersion(GetSparkVersionArgs.builder()
            .longTermSupport(true)
            .build());

        var singleNode = new Cluster("singleNode", ClusterArgs.builder()
            .clusterName("Single Node")
            .sparkVersion(latestLts.applyValue(getSparkVersionResult -> getSparkVersionResult.id()))
            .nodeTypeId(smallest.applyValue(getNodeTypeResult -> getNodeTypeResult.id()))
            .autoterminationMinutes(20)
            .sparkConf(Map.ofEntries(
                Map.entry("spark.databricks.cluster.profile", "singleNode"),
                Map.entry("spark.master", "local[*]")
            ))
            .customTags(Map.of("ResourceClass", "SingleNode"))
            .build());

    }
}
resources:
  singleNode:
    type: databricks:Cluster
    name: single_node
    properties:
      clusterName: Single Node
      sparkVersion: ${latestLts.id}
      nodeTypeId: ${smallest.id}
      autoterminationMinutes: 20
      sparkConf:
        spark.databricks.cluster.profile: singleNode
        spark.master: local[*]
      customTags:
        ResourceClass: SingleNode
variables:
  smallest:
    fn::invoke:
      function: databricks:getNodeType
      arguments:
        localDisk: true
  latestLts:
    fn::invoke:
      function: databricks:getSparkVersion
      arguments:
        longTermSupport: true
minWorkers Number
The minimum number of workers to which the cluster can scale down when underutilized. It is also the initial number of workers the cluster will have after creation.

ClusterAwsAttributes
, ClusterAwsAttributesArgs

Availability string
Availability type used for all subsequent nodes past the first_on_demand ones. Valid values are SPOT, SPOT_WITH_FALLBACK and ON_DEMAND. Note: If first_on_demand is zero, this availability type will be used for the entire cluster. Backend default value is SPOT_WITH_FALLBACK and could change in the future
EbsVolumeCount int
The number of volumes launched for each instance. You can choose up to 10 volumes. This feature is only enabled for supported node types. Legacy node types cannot specify custom EBS volumes. For node types with no instance store, at least one EBS volume needs to be specified; otherwise, cluster creation will fail. These EBS volumes will be mounted at /ebs0, /ebs1, and etc. Instance store volumes will be mounted at /local_disk0, /local_disk1, and etc. If EBS volumes are attached, Databricks will configure Spark to use only the EBS volumes for scratch storage because heterogeneously sized scratch devices can lead to inefficient disk utilization. If no EBS volumes are attached, Databricks will configure Spark to use instance store volumes. If EBS volumes are specified, then the Spark configuration spark.local.dir will be overridden.
EbsVolumeIops int
EbsVolumeSize int
The size of each EBS volume (in GiB) launched for each instance. For general purpose SSD, this value must be within the range 100 - 4096. For throughput optimized HDD, this value must be within the range 500 - 4096. Custom EBS volumes cannot be specified for the legacy node types (memory-optimized and compute-optimized).
EbsVolumeThroughput int
EbsVolumeType string
The type of EBS volumes that will be launched with this cluster. Valid values are GENERAL_PURPOSE_SSD or THROUGHPUT_OPTIMIZED_HDD. Use this option only if you're not picking Delta Optimized i3.* node types.
FirstOnDemand int
The first first_on_demand nodes of the cluster will be placed on on-demand instances. If this value is greater than 0, the cluster driver node will be placed on an on-demand instance. If this value is greater than or equal to the current cluster size, all nodes will be placed on on-demand instances. If this value is less than the current cluster size, first_on_demand nodes will be placed on on-demand instances, and the remainder will be placed on availability instances. This value does not affect cluster size and cannot be mutated over the lifetime of a cluster. Backend default value is 1 and could change in the future
InstanceProfileArn string
Nodes for this cluster will only be placed on AWS instances with this instance profile. Please see databricks.InstanceProfile resource documentation for extended examples on adding a valid instance profile using Pulumi.
SpotBidPricePercent int
The max price for AWS spot instances, as a percentage of the corresponding instance type’s on-demand price. For example, if this field is set to 50, and the cluster needs a new i3.xlarge spot instance, then the max price is half of the price of on-demand i3.xlarge instances. Similarly, if this field is set to 200, the max price is twice the price of on-demand i3.xlarge instances. If not specified, the default value is 100. When spot instances are requested for this cluster, only spot instances whose max price percentage matches this field will be considered. For safety, we enforce this field to be no more than 10000.
ZoneId string
Identifier for the availability zone/datacenter in which the cluster resides. This string will be of a form like us-west-2a. The provided availability zone must be in the same region as the Databricks deployment. For example, us-west-2a is not a valid zone ID if the Databricks deployment resides in the us-east-1 region. Enable automatic availability zone selection ("Auto-AZ"), by setting the value auto. Databricks selects the AZ based on available IPs in the workspace subnets and retries in other availability zones if AWS returns insufficient capacity errors.
Availability string
Availability type used for all subsequent nodes past the first_on_demand ones. Valid values are SPOT, SPOT_WITH_FALLBACK and ON_DEMAND. Note: If first_on_demand is zero, this availability type will be used for the entire cluster. Backend default value is SPOT_WITH_FALLBACK and could change in the future
EbsVolumeCount int
The number of volumes launched for each instance. You can choose up to 10 volumes. This feature is only enabled for supported node types. Legacy node types cannot specify custom EBS volumes. For node types with no instance store, at least one EBS volume needs to be specified; otherwise, cluster creation will fail. These EBS volumes will be mounted at /ebs0, /ebs1, and etc. Instance store volumes will be mounted at /local_disk0, /local_disk1, and etc. If EBS volumes are attached, Databricks will configure Spark to use only the EBS volumes for scratch storage because heterogeneously sized scratch devices can lead to inefficient disk utilization. If no EBS volumes are attached, Databricks will configure Spark to use instance store volumes. If EBS volumes are specified, then the Spark configuration spark.local.dir will be overridden.
EbsVolumeIops int
EbsVolumeSize int
The size of each EBS volume (in GiB) launched for each instance. For general purpose SSD, this value must be within the range 100 - 4096. For throughput optimized HDD, this value must be within the range 500 - 4096. Custom EBS volumes cannot be specified for the legacy node types (memory-optimized and compute-optimized).
EbsVolumeThroughput int
EbsVolumeType string
The type of EBS volumes that will be launched with this cluster. Valid values are GENERAL_PURPOSE_SSD or THROUGHPUT_OPTIMIZED_HDD. Use this option only if you're not picking Delta Optimized i3.* node types.
FirstOnDemand int
The first first_on_demand nodes of the cluster will be placed on on-demand instances. If this value is greater than 0, the cluster driver node will be placed on an on-demand instance. If this value is greater than or equal to the current cluster size, all nodes will be placed on on-demand instances. If this value is less than the current cluster size, first_on_demand nodes will be placed on on-demand instances, and the remainder will be placed on availability instances. This value does not affect cluster size and cannot be mutated over the lifetime of a cluster. Backend default value is 1 and could change in the future
InstanceProfileArn string
Nodes for this cluster will only be placed on AWS instances with this instance profile. Please see databricks.InstanceProfile resource documentation for extended examples on adding a valid instance profile using Pulumi.
SpotBidPricePercent int
The max price for AWS spot instances, as a percentage of the corresponding instance type’s on-demand price. For example, if this field is set to 50, and the cluster needs a new i3.xlarge spot instance, then the max price is half of the price of on-demand i3.xlarge instances. Similarly, if this field is set to 200, the max price is twice the price of on-demand i3.xlarge instances. If not specified, the default value is 100. When spot instances are requested for this cluster, only spot instances whose max price percentage matches this field will be considered. For safety, we enforce this field to be no more than 10000.
ZoneId string
Identifier for the availability zone/datacenter in which the cluster resides. This string will be of a form like us-west-2a. The provided availability zone must be in the same region as the Databricks deployment. For example, us-west-2a is not a valid zone ID if the Databricks deployment resides in the us-east-1 region. Enable automatic availability zone selection ("Auto-AZ"), by setting the value auto. Databricks selects the AZ based on available IPs in the workspace subnets and retries in other availability zones if AWS returns insufficient capacity errors.
availability String
Availability type used for all subsequent nodes past the first_on_demand ones. Valid values are SPOT, SPOT_WITH_FALLBACK and ON_DEMAND. Note: If first_on_demand is zero, this availability type will be used for the entire cluster. Backend default value is SPOT_WITH_FALLBACK and could change in the future
ebsVolumeCount Integer
The number of volumes launched for each instance. You can choose up to 10 volumes. This feature is only enabled for supported node types. Legacy node types cannot specify custom EBS volumes. For node types with no instance store, at least one EBS volume needs to be specified; otherwise, cluster creation will fail. These EBS volumes will be mounted at /ebs0, /ebs1, and etc. Instance store volumes will be mounted at /local_disk0, /local_disk1, and etc. If EBS volumes are attached, Databricks will configure Spark to use only the EBS volumes for scratch storage because heterogeneously sized scratch devices can lead to inefficient disk utilization. If no EBS volumes are attached, Databricks will configure Spark to use instance store volumes. If EBS volumes are specified, then the Spark configuration spark.local.dir will be overridden.
ebsVolumeIops Integer
ebsVolumeSize Integer
The size of each EBS volume (in GiB) launched for each instance. For general purpose SSD, this value must be within the range 100 - 4096. For throughput optimized HDD, this value must be within the range 500 - 4096. Custom EBS volumes cannot be specified for the legacy node types (memory-optimized and compute-optimized).
ebsVolumeThroughput Integer
ebsVolumeType String
The type of EBS volumes that will be launched with this cluster. Valid values are GENERAL_PURPOSE_SSD or THROUGHPUT_OPTIMIZED_HDD. Use this option only if you're not picking Delta Optimized i3.* node types.
firstOnDemand Integer
The first first_on_demand nodes of the cluster will be placed on on-demand instances. If this value is greater than 0, the cluster driver node will be placed on an on-demand instance. If this value is greater than or equal to the current cluster size, all nodes will be placed on on-demand instances. If this value is less than the current cluster size, first_on_demand nodes will be placed on on-demand instances, and the remainder will be placed on availability instances. This value does not affect cluster size and cannot be mutated over the lifetime of a cluster. Backend default value is 1 and could change in the future
instanceProfileArn String
Nodes for this cluster will only be placed on AWS instances with this instance profile. Please see databricks.InstanceProfile resource documentation for extended examples on adding a valid instance profile using Pulumi.
spotBidPricePercent Integer
The max price for AWS spot instances, as a percentage of the corresponding instance type’s on-demand price. For example, if this field is set to 50, and the cluster needs a new i3.xlarge spot instance, then the max price is half of the price of on-demand i3.xlarge instances. Similarly, if this field is set to 200, the max price is twice the price of on-demand i3.xlarge instances. If not specified, the default value is 100. When spot instances are requested for this cluster, only spot instances whose max price percentage matches this field will be considered. For safety, we enforce this field to be no more than 10000.
zoneId String
Identifier for the availability zone/datacenter in which the cluster resides. This string will be of a form like us-west-2a. The provided availability zone must be in the same region as the Databricks deployment. For example, us-west-2a is not a valid zone ID if the Databricks deployment resides in the us-east-1 region. Enable automatic availability zone selection ("Auto-AZ"), by setting the value auto. Databricks selects the AZ based on available IPs in the workspace subnets and retries in other availability zones if AWS returns insufficient capacity errors.
availability string
Availability type used for all subsequent nodes past the first_on_demand ones. Valid values are SPOT, SPOT_WITH_FALLBACK and ON_DEMAND. Note: If first_on_demand is zero, this availability type will be used for the entire cluster. Backend default value is SPOT_WITH_FALLBACK and could change in the future
ebsVolumeCount number
The number of volumes launched for each instance. You can choose up to 10 volumes. This feature is only enabled for supported node types. Legacy node types cannot specify custom EBS volumes. For node types with no instance store, at least one EBS volume needs to be specified; otherwise, cluster creation will fail. These EBS volumes will be mounted at /ebs0, /ebs1, and etc. Instance store volumes will be mounted at /local_disk0, /local_disk1, and etc. If EBS volumes are attached, Databricks will configure Spark to use only the EBS volumes for scratch storage because heterogeneously sized scratch devices can lead to inefficient disk utilization. If no EBS volumes are attached, Databricks will configure Spark to use instance store volumes. If EBS volumes are specified, then the Spark configuration spark.local.dir will be overridden.
ebsVolumeIops number
ebsVolumeSize number
The size of each EBS volume (in GiB) launched for each instance. For general purpose SSD, this value must be within the range 100 - 4096. For throughput optimized HDD, this value must be within the range 500 - 4096. Custom EBS volumes cannot be specified for the legacy node types (memory-optimized and compute-optimized).
ebsVolumeThroughput number
ebsVolumeType string
The type of EBS volumes that will be launched with this cluster. Valid values are GENERAL_PURPOSE_SSD or THROUGHPUT_OPTIMIZED_HDD. Use this option only if you're not picking Delta Optimized i3.* node types.
firstOnDemand number
The first first_on_demand nodes of the cluster will be placed on on-demand instances. If this value is greater than 0, the cluster driver node will be placed on an on-demand instance. If this value is greater than or equal to the current cluster size, all nodes will be placed on on-demand instances. If this value is less than the current cluster size, first_on_demand nodes will be placed on on-demand instances, and the remainder will be placed on availability instances. This value does not affect cluster size and cannot be mutated over the lifetime of a cluster. Backend default value is 1 and could change in the future
instanceProfileArn string
Nodes for this cluster will only be placed on AWS instances with this instance profile. Please see databricks.InstanceProfile resource documentation for extended examples on adding a valid instance profile using Pulumi.
spotBidPricePercent number
The max price for AWS spot instances, as a percentage of the corresponding instance type’s on-demand price. For example, if this field is set to 50, and the cluster needs a new i3.xlarge spot instance, then the max price is half of the price of on-demand i3.xlarge instances. Similarly, if this field is set to 200, the max price is twice the price of on-demand i3.xlarge instances. If not specified, the default value is 100. When spot instances are requested for this cluster, only spot instances whose max price percentage matches this field will be considered. For safety, we enforce this field to be no more than 10000.
zoneId string
Identifier for the availability zone/datacenter in which the cluster resides. This string will be of a form like us-west-2a. The provided availability zone must be in the same region as the Databricks deployment. For example, us-west-2a is not a valid zone ID if the Databricks deployment resides in the us-east-1 region. Enable automatic availability zone selection ("Auto-AZ"), by setting the value auto. Databricks selects the AZ based on available IPs in the workspace subnets and retries in other availability zones if AWS returns insufficient capacity errors.
availability str
Availability type used for all subsequent nodes past the first_on_demand ones. Valid values are SPOT, SPOT_WITH_FALLBACK and ON_DEMAND. Note: If first_on_demand is zero, this availability type will be used for the entire cluster. Backend default value is SPOT_WITH_FALLBACK and could change in the future
ebs_volume_count int
The number of volumes launched for each instance. You can choose up to 10 volumes. This feature is only enabled for supported node types. Legacy node types cannot specify custom EBS volumes. For node types with no instance store, at least one EBS volume needs to be specified; otherwise, cluster creation will fail. These EBS volumes will be mounted at /ebs0, /ebs1, and etc. Instance store volumes will be mounted at /local_disk0, /local_disk1, and etc. If EBS volumes are attached, Databricks will configure Spark to use only the EBS volumes for scratch storage because heterogeneously sized scratch devices can lead to inefficient disk utilization. If no EBS volumes are attached, Databricks will configure Spark to use instance store volumes. If EBS volumes are specified, then the Spark configuration spark.local.dir will be overridden.
ebs_volume_iops int
ebs_volume_size int
The size of each EBS volume (in GiB) launched for each instance. For general purpose SSD, this value must be within the range 100 - 4096. For throughput optimized HDD, this value must be within the range 500 - 4096. Custom EBS volumes cannot be specified for the legacy node types (memory-optimized and compute-optimized).
ebs_volume_throughput int
ebs_volume_type str
The type of EBS volumes that will be launched with this cluster. Valid values are GENERAL_PURPOSE_SSD or THROUGHPUT_OPTIMIZED_HDD. Use this option only if you're not picking Delta Optimized i3.* node types.
first_on_demand int
The first first_on_demand nodes of the cluster will be placed on on-demand instances. If this value is greater than 0, the cluster driver node will be placed on an on-demand instance. If this value is greater than or equal to the current cluster size, all nodes will be placed on on-demand instances. If this value is less than the current cluster size, first_on_demand nodes will be placed on on-demand instances, and the remainder will be placed on availability instances. This value does not affect cluster size and cannot be mutated over the lifetime of a cluster. Backend default value is 1 and could change in the future
instance_profile_arn str
Nodes for this cluster will only be placed on AWS instances with this instance profile. Please see databricks.InstanceProfile resource documentation for extended examples on adding a valid instance profile using Pulumi.
spot_bid_price_percent int
The max price for AWS spot instances, as a percentage of the corresponding instance type’s on-demand price. For example, if this field is set to 50, and the cluster needs a new i3.xlarge spot instance, then the max price is half of the price of on-demand i3.xlarge instances. Similarly, if this field is set to 200, the max price is twice the price of on-demand i3.xlarge instances. If not specified, the default value is 100. When spot instances are requested for this cluster, only spot instances whose max price percentage matches this field will be considered. For safety, we enforce this field to be no more than 10000.
zone_id str
Identifier for the availability zone/datacenter in which the cluster resides. This string will be of a form like us-west-2a. The provided availability zone must be in the same region as the Databricks deployment. For example, us-west-2a is not a valid zone ID if the Databricks deployment resides in the us-east-1 region. Enable automatic availability zone selection ("Auto-AZ"), by setting the value auto. Databricks selects the AZ based on available IPs in the workspace subnets and retries in other availability zones if AWS returns insufficient capacity errors.
availability String
Availability type used for all subsequent nodes past the first_on_demand ones. Valid values are SPOT, SPOT_WITH_FALLBACK and ON_DEMAND. Note: If first_on_demand is zero, this availability type will be used for the entire cluster. Backend default value is SPOT_WITH_FALLBACK and could change in the future
ebsVolumeCount Number
The number of volumes launched for each instance. You can choose up to 10 volumes. This feature is only enabled for supported node types. Legacy node types cannot specify custom EBS volumes. For node types with no instance store, at least one EBS volume needs to be specified; otherwise, cluster creation will fail. These EBS volumes will be mounted at /ebs0, /ebs1, and etc. Instance store volumes will be mounted at /local_disk0, /local_disk1, and etc. If EBS volumes are attached, Databricks will configure Spark to use only the EBS volumes for scratch storage because heterogeneously sized scratch devices can lead to inefficient disk utilization. If no EBS volumes are attached, Databricks will configure Spark to use instance store volumes. If EBS volumes are specified, then the Spark configuration spark.local.dir will be overridden.
ebsVolumeIops Number
ebsVolumeSize Number
The size of each EBS volume (in GiB) launched for each instance. For general purpose SSD, this value must be within the range 100 - 4096. For throughput optimized HDD, this value must be within the range 500 - 4096. Custom EBS volumes cannot be specified for the legacy node types (memory-optimized and compute-optimized).
ebsVolumeThroughput Number
ebsVolumeType String
The type of EBS volumes that will be launched with this cluster. Valid values are GENERAL_PURPOSE_SSD or THROUGHPUT_OPTIMIZED_HDD. Use this option only if you're not picking Delta Optimized i3.* node types.
firstOnDemand Number
The first first_on_demand nodes of the cluster will be placed on on-demand instances. If this value is greater than 0, the cluster driver node will be placed on an on-demand instance. If this value is greater than or equal to the current cluster size, all nodes will be placed on on-demand instances. If this value is less than the current cluster size, first_on_demand nodes will be placed on on-demand instances, and the remainder will be placed on availability instances. This value does not affect cluster size and cannot be mutated over the lifetime of a cluster. Backend default value is 1 and could change in the future
instanceProfileArn String
Nodes for this cluster will only be placed on AWS instances with this instance profile. Please see databricks.InstanceProfile resource documentation for extended examples on adding a valid instance profile using Pulumi.
spotBidPricePercent Number
The max price for AWS spot instances, as a percentage of the corresponding instance type’s on-demand price. For example, if this field is set to 50, and the cluster needs a new i3.xlarge spot instance, then the max price is half of the price of on-demand i3.xlarge instances. Similarly, if this field is set to 200, the max price is twice the price of on-demand i3.xlarge instances. If not specified, the default value is 100. When spot instances are requested for this cluster, only spot instances whose max price percentage matches this field will be considered. For safety, we enforce this field to be no more than 10000.
zoneId String
Identifier for the availability zone/datacenter in which the cluster resides. This string will be of a form like us-west-2a. The provided availability zone must be in the same region as the Databricks deployment. For example, us-west-2a is not a valid zone ID if the Databricks deployment resides in the us-east-1 region. Enable automatic availability zone selection ("Auto-AZ"), by setting the value auto. Databricks selects the AZ based on available IPs in the workspace subnets and retries in other availability zones if AWS returns insufficient capacity errors.

ClusterAzureAttributes
, ClusterAzureAttributesArgs

Availability string
Availability type used for all subsequent nodes past the first_on_demand ones. Valid values are SPOT_AZURE, SPOT_WITH_FALLBACK_AZURE, and ON_DEMAND_AZURE. Note: If first_on_demand is zero, this availability type will be used for the entire cluster.
FirstOnDemand int
The first first_on_demand nodes of the cluster will be placed on on-demand instances. If this value is greater than 0, the cluster driver node will be placed on an on-demand instance. If this value is greater than or equal to the current cluster size, all nodes will be placed on on-demand instances. If this value is less than the current cluster size, first_on_demand nodes will be placed on on-demand instances, and the remainder will be placed on availability instances. This value does not affect cluster size and cannot be mutated over the lifetime of a cluster.
LogAnalyticsInfo ClusterAzureAttributesLogAnalyticsInfo
SpotBidMaxPrice double
The max bid price used for Azure spot instances. You can set this to greater than or equal to the current spot price. You can also set this to -1, which specifies that the instance cannot be evicted on the basis of price. The price for the instance will be the current price for spot instances or the price for a standard instance.
Availability string
Availability type used for all subsequent nodes past the first_on_demand ones. Valid values are SPOT_AZURE, SPOT_WITH_FALLBACK_AZURE, and ON_DEMAND_AZURE. Note: If first_on_demand is zero, this availability type will be used for the entire cluster.
FirstOnDemand int
The first first_on_demand nodes of the cluster will be placed on on-demand instances. If this value is greater than 0, the cluster driver node will be placed on an on-demand instance. If this value is greater than or equal to the current cluster size, all nodes will be placed on on-demand instances. If this value is less than the current cluster size, first_on_demand nodes will be placed on on-demand instances, and the remainder will be placed on availability instances. This value does not affect cluster size and cannot be mutated over the lifetime of a cluster.
LogAnalyticsInfo ClusterAzureAttributesLogAnalyticsInfo
SpotBidMaxPrice float64
The max bid price used for Azure spot instances. You can set this to greater than or equal to the current spot price. You can also set this to -1, which specifies that the instance cannot be evicted on the basis of price. The price for the instance will be the current price for spot instances or the price for a standard instance.
availability String
Availability type used for all subsequent nodes past the first_on_demand ones. Valid values are SPOT_AZURE, SPOT_WITH_FALLBACK_AZURE, and ON_DEMAND_AZURE. Note: If first_on_demand is zero, this availability type will be used for the entire cluster.
firstOnDemand Integer
The first first_on_demand nodes of the cluster will be placed on on-demand instances. If this value is greater than 0, the cluster driver node will be placed on an on-demand instance. If this value is greater than or equal to the current cluster size, all nodes will be placed on on-demand instances. If this value is less than the current cluster size, first_on_demand nodes will be placed on on-demand instances, and the remainder will be placed on availability instances. This value does not affect cluster size and cannot be mutated over the lifetime of a cluster.
logAnalyticsInfo ClusterAzureAttributesLogAnalyticsInfo
spotBidMaxPrice Double
The max bid price used for Azure spot instances. You can set this to greater than or equal to the current spot price. You can also set this to -1, which specifies that the instance cannot be evicted on the basis of price. The price for the instance will be the current price for spot instances or the price for a standard instance.
availability string
Availability type used for all subsequent nodes past the first_on_demand ones. Valid values are SPOT_AZURE, SPOT_WITH_FALLBACK_AZURE, and ON_DEMAND_AZURE. Note: If first_on_demand is zero, this availability type will be used for the entire cluster.
firstOnDemand number
The first first_on_demand nodes of the cluster will be placed on on-demand instances. If this value is greater than 0, the cluster driver node will be placed on an on-demand instance. If this value is greater than or equal to the current cluster size, all nodes will be placed on on-demand instances. If this value is less than the current cluster size, first_on_demand nodes will be placed on on-demand instances, and the remainder will be placed on availability instances. This value does not affect cluster size and cannot be mutated over the lifetime of a cluster.
logAnalyticsInfo ClusterAzureAttributesLogAnalyticsInfo
spotBidMaxPrice number
The max bid price used for Azure spot instances. You can set this to greater than or equal to the current spot price. You can also set this to -1, which specifies that the instance cannot be evicted on the basis of price. The price for the instance will be the current price for spot instances or the price for a standard instance.
availability str
Availability type used for all subsequent nodes past the first_on_demand ones. Valid values are SPOT_AZURE, SPOT_WITH_FALLBACK_AZURE, and ON_DEMAND_AZURE. Note: If first_on_demand is zero, this availability type will be used for the entire cluster.
first_on_demand int
The first first_on_demand nodes of the cluster will be placed on on-demand instances. If this value is greater than 0, the cluster driver node will be placed on an on-demand instance. If this value is greater than or equal to the current cluster size, all nodes will be placed on on-demand instances. If this value is less than the current cluster size, first_on_demand nodes will be placed on on-demand instances, and the remainder will be placed on availability instances. This value does not affect cluster size and cannot be mutated over the lifetime of a cluster.
log_analytics_info ClusterAzureAttributesLogAnalyticsInfo
spot_bid_max_price float
The max bid price used for Azure spot instances. You can set this to greater than or equal to the current spot price. You can also set this to -1, which specifies that the instance cannot be evicted on the basis of price. The price for the instance will be the current price for spot instances or the price for a standard instance.
availability String
Availability type used for all subsequent nodes past the first_on_demand ones. Valid values are SPOT_AZURE, SPOT_WITH_FALLBACK_AZURE, and ON_DEMAND_AZURE. Note: If first_on_demand is zero, this availability type will be used for the entire cluster.
firstOnDemand Number
The first first_on_demand nodes of the cluster will be placed on on-demand instances. If this value is greater than 0, the cluster driver node will be placed on an on-demand instance. If this value is greater than or equal to the current cluster size, all nodes will be placed on on-demand instances. If this value is less than the current cluster size, first_on_demand nodes will be placed on on-demand instances, and the remainder will be placed on availability instances. This value does not affect cluster size and cannot be mutated over the lifetime of a cluster.
logAnalyticsInfo Property Map
spotBidMaxPrice Number
The max bid price used for Azure spot instances. You can set this to greater than or equal to the current spot price. You can also set this to -1, which specifies that the instance cannot be evicted on the basis of price. The price for the instance will be the current price for spot instances or the price for a standard instance.

ClusterAzureAttributesLogAnalyticsInfo
, ClusterAzureAttributesLogAnalyticsInfoArgs

ClusterClusterLogConf
, ClusterClusterLogConfArgs

ClusterClusterLogConfDbfs
, ClusterClusterLogConfDbfsArgs

Destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
Destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. String
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. str
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. String
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.

ClusterClusterLogConfS3
, ClusterClusterLogConfS3Args

Destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
CannedAcl string
Set canned access control list, e.g. bucket-owner-full-control. If canned_cal is set, the cluster instance profile must have s3:PutObjectAcl permission on the destination bucket and prefix. The full list of possible canned ACLs can be found here. By default, only the object owner gets full control. If you are using a cross-account role for writing data, you may want to set bucket-owner-full-control to make bucket owners able to read the logs.
EnableEncryption bool
Enable server-side encryption, false by default.
EncryptionType string
The encryption type, it could be sse-s3 or sse-kms. It is used only when encryption is enabled, and the default type is sse-s3.
Endpoint string
S3 endpoint, e.g. https://s3-us-west-2.amazonaws.com. Either region or endpoint needs to be set. If both are set, the endpoint is used.
KmsKey string
KMS key used if encryption is enabled and encryption type is set to sse-kms.
Region string
S3 region, e.g. us-west-2. Either region or endpoint must be set. If both are set, the endpoint is used.
Destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
CannedAcl string
Set canned access control list, e.g. bucket-owner-full-control. If canned_cal is set, the cluster instance profile must have s3:PutObjectAcl permission on the destination bucket and prefix. The full list of possible canned ACLs can be found here. By default, only the object owner gets full control. If you are using a cross-account role for writing data, you may want to set bucket-owner-full-control to make bucket owners able to read the logs.
EnableEncryption bool
Enable server-side encryption, false by default.
EncryptionType string
The encryption type, it could be sse-s3 or sse-kms. It is used only when encryption is enabled, and the default type is sse-s3.
Endpoint string
S3 endpoint, e.g. https://s3-us-west-2.amazonaws.com. Either region or endpoint needs to be set. If both are set, the endpoint is used.
KmsKey string
KMS key used if encryption is enabled and encryption type is set to sse-kms.
Region string
S3 region, e.g. us-west-2. Either region or endpoint must be set. If both are set, the endpoint is used.
destination This property is required. String
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
cannedAcl String
Set canned access control list, e.g. bucket-owner-full-control. If canned_cal is set, the cluster instance profile must have s3:PutObjectAcl permission on the destination bucket and prefix. The full list of possible canned ACLs can be found here. By default, only the object owner gets full control. If you are using a cross-account role for writing data, you may want to set bucket-owner-full-control to make bucket owners able to read the logs.
enableEncryption Boolean
Enable server-side encryption, false by default.
encryptionType String
The encryption type, it could be sse-s3 or sse-kms. It is used only when encryption is enabled, and the default type is sse-s3.
endpoint String
S3 endpoint, e.g. https://s3-us-west-2.amazonaws.com. Either region or endpoint needs to be set. If both are set, the endpoint is used.
kmsKey String
KMS key used if encryption is enabled and encryption type is set to sse-kms.
region String
S3 region, e.g. us-west-2. Either region or endpoint must be set. If both are set, the endpoint is used.
destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
cannedAcl string
Set canned access control list, e.g. bucket-owner-full-control. If canned_cal is set, the cluster instance profile must have s3:PutObjectAcl permission on the destination bucket and prefix. The full list of possible canned ACLs can be found here. By default, only the object owner gets full control. If you are using a cross-account role for writing data, you may want to set bucket-owner-full-control to make bucket owners able to read the logs.
enableEncryption boolean
Enable server-side encryption, false by default.
encryptionType string
The encryption type, it could be sse-s3 or sse-kms. It is used only when encryption is enabled, and the default type is sse-s3.
endpoint string
S3 endpoint, e.g. https://s3-us-west-2.amazonaws.com. Either region or endpoint needs to be set. If both are set, the endpoint is used.
kmsKey string
KMS key used if encryption is enabled and encryption type is set to sse-kms.
region string
S3 region, e.g. us-west-2. Either region or endpoint must be set. If both are set, the endpoint is used.
destination This property is required. str
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
canned_acl str
Set canned access control list, e.g. bucket-owner-full-control. If canned_cal is set, the cluster instance profile must have s3:PutObjectAcl permission on the destination bucket and prefix. The full list of possible canned ACLs can be found here. By default, only the object owner gets full control. If you are using a cross-account role for writing data, you may want to set bucket-owner-full-control to make bucket owners able to read the logs.
enable_encryption bool
Enable server-side encryption, false by default.
encryption_type str
The encryption type, it could be sse-s3 or sse-kms. It is used only when encryption is enabled, and the default type is sse-s3.
endpoint str
S3 endpoint, e.g. https://s3-us-west-2.amazonaws.com. Either region or endpoint needs to be set. If both are set, the endpoint is used.
kms_key str
KMS key used if encryption is enabled and encryption type is set to sse-kms.
region str
S3 region, e.g. us-west-2. Either region or endpoint must be set. If both are set, the endpoint is used.
destination This property is required. String
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
cannedAcl String
Set canned access control list, e.g. bucket-owner-full-control. If canned_cal is set, the cluster instance profile must have s3:PutObjectAcl permission on the destination bucket and prefix. The full list of possible canned ACLs can be found here. By default, only the object owner gets full control. If you are using a cross-account role for writing data, you may want to set bucket-owner-full-control to make bucket owners able to read the logs.
enableEncryption Boolean
Enable server-side encryption, false by default.
encryptionType String
The encryption type, it could be sse-s3 or sse-kms. It is used only when encryption is enabled, and the default type is sse-s3.
endpoint String
S3 endpoint, e.g. https://s3-us-west-2.amazonaws.com. Either region or endpoint needs to be set. If both are set, the endpoint is used.
kmsKey String
KMS key used if encryption is enabled and encryption type is set to sse-kms.
region String
S3 region, e.g. us-west-2. Either region or endpoint must be set. If both are set, the endpoint is used.

ClusterClusterLogConfVolumes
, ClusterClusterLogConfVolumesArgs

Destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
Destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. String
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. str
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. String
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.

ClusterClusterMountInfo
, ClusterClusterMountInfoArgs

LocalMountDirPath This property is required. string

path inside the Spark container.

For example, you can mount Azure Data Lake Storage container using the following code:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const storageAccount = "ewfw3ggwegwg"; const storageContainer = "test"; const withNfs = new databricks.Cluster("with_nfs", {clusterMountInfos: [{ networkFilesystemInfo: { serverAddress: ${storageAccount}.blob.core.windows.net, mountOptions: "sec=sys,vers=3,nolock,proto=tcp", }, remoteMountDirPath: ${storageAccount}/${storageContainer}, localMountDirPath: "/mnt/nfs-test", }]});

import pulumi
import pulumi_databricks as databricks

storage_account = "ewfw3ggwegwg"
storage_container = "test"
with_nfs = databricks.Cluster("with_nfs", cluster_mount_infos=[{
    "network_filesystem_info": {
        "server_address": f"{storage_account}.blob.core.windows.net",
        "mount_options": "sec=sys,vers=3,nolock,proto=tcp",
    },
    "remote_mount_dir_path": f"{storage_account}/{storage_container}",
    "local_mount_dir_path": "/mnt/nfs-test",
}])
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var storageAccount = "ewfw3ggwegwg";

    var storageContainer = "test";

    var withNfs = new Databricks.Cluster("with_nfs", new()
    {
        ClusterMountInfos = new[]
        {
            new Databricks.Inputs.ClusterClusterMountInfoArgs
            {
                NetworkFilesystemInfo = new Databricks.Inputs.ClusterClusterMountInfoNetworkFilesystemInfoArgs
                {
                    ServerAddress = $"{storageAccount}.blob.core.windows.net",
                    MountOptions = "sec=sys,vers=3,nolock,proto=tcp",
                },
                RemoteMountDirPath = $"{storageAccount}/{storageContainer}",
                LocalMountDirPath = "/mnt/nfs-test",
            },
        },
    });

});
package main

import (
	"fmt"

	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		storageAccount := "ewfw3ggwegwg"
		storageContainer := "test"
		_, err := databricks.NewCluster(ctx, "with_nfs", &databricks.ClusterArgs{
			ClusterMountInfos: databricks.ClusterClusterMountInfoArray{
				&databricks.ClusterClusterMountInfoArgs{
					NetworkFilesystemInfo: &databricks.ClusterClusterMountInfoNetworkFilesystemInfoArgs{
						ServerAddress: pulumi.Sprintf("%v.blob.core.windows.net", storageAccount),
						MountOptions:  pulumi.String("sec=sys,vers=3,nolock,proto=tcp"),
					},
					RemoteMountDirPath: pulumi.Sprintf("%v/%v", storageAccount, storageContainer),
					LocalMountDirPath:  pulumi.String("/mnt/nfs-test"),
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterClusterMountInfoArgs;
import com.pulumi.databricks.inputs.ClusterClusterMountInfoNetworkFilesystemInfoArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        final var storageAccount = "ewfw3ggwegwg";

        final var storageContainer = "test";

        var withNfs = new Cluster("withNfs", ClusterArgs.builder()
            .clusterMountInfos(ClusterClusterMountInfoArgs.builder()
                .networkFilesystemInfo(ClusterClusterMountInfoNetworkFilesystemInfoArgs.builder()
                    .serverAddress(String.format("%s.blob.core.windows.net", storageAccount))
                    .mountOptions("sec=sys,vers=3,nolock,proto=tcp")
                    .build())
                .remoteMountDirPath(String.format("%s/%s", storageAccount,storageContainer))
                .localMountDirPath("/mnt/nfs-test")
                .build())
            .build());

    }
}
resources:
  withNfs:
    type: databricks:Cluster
    name: with_nfs
    properties:
      clusterMountInfos:
        - networkFilesystemInfo:
            serverAddress: ${storageAccount}.blob.core.windows.net
            mountOptions: sec=sys,vers=3,nolock,proto=tcp
          remoteMountDirPath: ${storageAccount}/${storageContainer}
          localMountDirPath: /mnt/nfs-test
variables:
  storageAccount: ewfw3ggwegwg
  storageContainer: test
NetworkFilesystemInfo This property is required. ClusterClusterMountInfoNetworkFilesystemInfo
block specifying connection. It consists of:
RemoteMountDirPath string
string specifying path to mount on the remote service.
LocalMountDirPath This property is required. string

path inside the Spark container.

For example, you can mount Azure Data Lake Storage container using the following code:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const storageAccount = "ewfw3ggwegwg"; const storageContainer = "test"; const withNfs = new databricks.Cluster("with_nfs", {clusterMountInfos: [{ networkFilesystemInfo: { serverAddress: ${storageAccount}.blob.core.windows.net, mountOptions: "sec=sys,vers=3,nolock,proto=tcp", }, remoteMountDirPath: ${storageAccount}/${storageContainer}, localMountDirPath: "/mnt/nfs-test", }]});

import pulumi
import pulumi_databricks as databricks

storage_account = "ewfw3ggwegwg"
storage_container = "test"
with_nfs = databricks.Cluster("with_nfs", cluster_mount_infos=[{
    "network_filesystem_info": {
        "server_address": f"{storage_account}.blob.core.windows.net",
        "mount_options": "sec=sys,vers=3,nolock,proto=tcp",
    },
    "remote_mount_dir_path": f"{storage_account}/{storage_container}",
    "local_mount_dir_path": "/mnt/nfs-test",
}])
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var storageAccount = "ewfw3ggwegwg";

    var storageContainer = "test";

    var withNfs = new Databricks.Cluster("with_nfs", new()
    {
        ClusterMountInfos = new[]
        {
            new Databricks.Inputs.ClusterClusterMountInfoArgs
            {
                NetworkFilesystemInfo = new Databricks.Inputs.ClusterClusterMountInfoNetworkFilesystemInfoArgs
                {
                    ServerAddress = $"{storageAccount}.blob.core.windows.net",
                    MountOptions = "sec=sys,vers=3,nolock,proto=tcp",
                },
                RemoteMountDirPath = $"{storageAccount}/{storageContainer}",
                LocalMountDirPath = "/mnt/nfs-test",
            },
        },
    });

});
package main

import (
	"fmt"

	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		storageAccount := "ewfw3ggwegwg"
		storageContainer := "test"
		_, err := databricks.NewCluster(ctx, "with_nfs", &databricks.ClusterArgs{
			ClusterMountInfos: databricks.ClusterClusterMountInfoArray{
				&databricks.ClusterClusterMountInfoArgs{
					NetworkFilesystemInfo: &databricks.ClusterClusterMountInfoNetworkFilesystemInfoArgs{
						ServerAddress: pulumi.Sprintf("%v.blob.core.windows.net", storageAccount),
						MountOptions:  pulumi.String("sec=sys,vers=3,nolock,proto=tcp"),
					},
					RemoteMountDirPath: pulumi.Sprintf("%v/%v", storageAccount, storageContainer),
					LocalMountDirPath:  pulumi.String("/mnt/nfs-test"),
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterClusterMountInfoArgs;
import com.pulumi.databricks.inputs.ClusterClusterMountInfoNetworkFilesystemInfoArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        final var storageAccount = "ewfw3ggwegwg";

        final var storageContainer = "test";

        var withNfs = new Cluster("withNfs", ClusterArgs.builder()
            .clusterMountInfos(ClusterClusterMountInfoArgs.builder()
                .networkFilesystemInfo(ClusterClusterMountInfoNetworkFilesystemInfoArgs.builder()
                    .serverAddress(String.format("%s.blob.core.windows.net", storageAccount))
                    .mountOptions("sec=sys,vers=3,nolock,proto=tcp")
                    .build())
                .remoteMountDirPath(String.format("%s/%s", storageAccount,storageContainer))
                .localMountDirPath("/mnt/nfs-test")
                .build())
            .build());

    }
}
resources:
  withNfs:
    type: databricks:Cluster
    name: with_nfs
    properties:
      clusterMountInfos:
        - networkFilesystemInfo:
            serverAddress: ${storageAccount}.blob.core.windows.net
            mountOptions: sec=sys,vers=3,nolock,proto=tcp
          remoteMountDirPath: ${storageAccount}/${storageContainer}
          localMountDirPath: /mnt/nfs-test
variables:
  storageAccount: ewfw3ggwegwg
  storageContainer: test
NetworkFilesystemInfo This property is required. ClusterClusterMountInfoNetworkFilesystemInfo
block specifying connection. It consists of:
RemoteMountDirPath string
string specifying path to mount on the remote service.
localMountDirPath This property is required. String

path inside the Spark container.

For example, you can mount Azure Data Lake Storage container using the following code:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const storageAccount = "ewfw3ggwegwg"; const storageContainer = "test"; const withNfs = new databricks.Cluster("with_nfs", {clusterMountInfos: [{ networkFilesystemInfo: { serverAddress: ${storageAccount}.blob.core.windows.net, mountOptions: "sec=sys,vers=3,nolock,proto=tcp", }, remoteMountDirPath: ${storageAccount}/${storageContainer}, localMountDirPath: "/mnt/nfs-test", }]});

import pulumi
import pulumi_databricks as databricks

storage_account = "ewfw3ggwegwg"
storage_container = "test"
with_nfs = databricks.Cluster("with_nfs", cluster_mount_infos=[{
    "network_filesystem_info": {
        "server_address": f"{storage_account}.blob.core.windows.net",
        "mount_options": "sec=sys,vers=3,nolock,proto=tcp",
    },
    "remote_mount_dir_path": f"{storage_account}/{storage_container}",
    "local_mount_dir_path": "/mnt/nfs-test",
}])
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var storageAccount = "ewfw3ggwegwg";

    var storageContainer = "test";

    var withNfs = new Databricks.Cluster("with_nfs", new()
    {
        ClusterMountInfos = new[]
        {
            new Databricks.Inputs.ClusterClusterMountInfoArgs
            {
                NetworkFilesystemInfo = new Databricks.Inputs.ClusterClusterMountInfoNetworkFilesystemInfoArgs
                {
                    ServerAddress = $"{storageAccount}.blob.core.windows.net",
                    MountOptions = "sec=sys,vers=3,nolock,proto=tcp",
                },
                RemoteMountDirPath = $"{storageAccount}/{storageContainer}",
                LocalMountDirPath = "/mnt/nfs-test",
            },
        },
    });

});
package main

import (
	"fmt"

	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		storageAccount := "ewfw3ggwegwg"
		storageContainer := "test"
		_, err := databricks.NewCluster(ctx, "with_nfs", &databricks.ClusterArgs{
			ClusterMountInfos: databricks.ClusterClusterMountInfoArray{
				&databricks.ClusterClusterMountInfoArgs{
					NetworkFilesystemInfo: &databricks.ClusterClusterMountInfoNetworkFilesystemInfoArgs{
						ServerAddress: pulumi.Sprintf("%v.blob.core.windows.net", storageAccount),
						MountOptions:  pulumi.String("sec=sys,vers=3,nolock,proto=tcp"),
					},
					RemoteMountDirPath: pulumi.Sprintf("%v/%v", storageAccount, storageContainer),
					LocalMountDirPath:  pulumi.String("/mnt/nfs-test"),
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterClusterMountInfoArgs;
import com.pulumi.databricks.inputs.ClusterClusterMountInfoNetworkFilesystemInfoArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        final var storageAccount = "ewfw3ggwegwg";

        final var storageContainer = "test";

        var withNfs = new Cluster("withNfs", ClusterArgs.builder()
            .clusterMountInfos(ClusterClusterMountInfoArgs.builder()
                .networkFilesystemInfo(ClusterClusterMountInfoNetworkFilesystemInfoArgs.builder()
                    .serverAddress(String.format("%s.blob.core.windows.net", storageAccount))
                    .mountOptions("sec=sys,vers=3,nolock,proto=tcp")
                    .build())
                .remoteMountDirPath(String.format("%s/%s", storageAccount,storageContainer))
                .localMountDirPath("/mnt/nfs-test")
                .build())
            .build());

    }
}
resources:
  withNfs:
    type: databricks:Cluster
    name: with_nfs
    properties:
      clusterMountInfos:
        - networkFilesystemInfo:
            serverAddress: ${storageAccount}.blob.core.windows.net
            mountOptions: sec=sys,vers=3,nolock,proto=tcp
          remoteMountDirPath: ${storageAccount}/${storageContainer}
          localMountDirPath: /mnt/nfs-test
variables:
  storageAccount: ewfw3ggwegwg
  storageContainer: test
networkFilesystemInfo This property is required. ClusterClusterMountInfoNetworkFilesystemInfo
block specifying connection. It consists of:
remoteMountDirPath String
string specifying path to mount on the remote service.
localMountDirPath This property is required. string

path inside the Spark container.

For example, you can mount Azure Data Lake Storage container using the following code:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const storageAccount = "ewfw3ggwegwg"; const storageContainer = "test"; const withNfs = new databricks.Cluster("with_nfs", {clusterMountInfos: [{ networkFilesystemInfo: { serverAddress: ${storageAccount}.blob.core.windows.net, mountOptions: "sec=sys,vers=3,nolock,proto=tcp", }, remoteMountDirPath: ${storageAccount}/${storageContainer}, localMountDirPath: "/mnt/nfs-test", }]});

import pulumi
import pulumi_databricks as databricks

storage_account = "ewfw3ggwegwg"
storage_container = "test"
with_nfs = databricks.Cluster("with_nfs", cluster_mount_infos=[{
    "network_filesystem_info": {
        "server_address": f"{storage_account}.blob.core.windows.net",
        "mount_options": "sec=sys,vers=3,nolock,proto=tcp",
    },
    "remote_mount_dir_path": f"{storage_account}/{storage_container}",
    "local_mount_dir_path": "/mnt/nfs-test",
}])
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var storageAccount = "ewfw3ggwegwg";

    var storageContainer = "test";

    var withNfs = new Databricks.Cluster("with_nfs", new()
    {
        ClusterMountInfos = new[]
        {
            new Databricks.Inputs.ClusterClusterMountInfoArgs
            {
                NetworkFilesystemInfo = new Databricks.Inputs.ClusterClusterMountInfoNetworkFilesystemInfoArgs
                {
                    ServerAddress = $"{storageAccount}.blob.core.windows.net",
                    MountOptions = "sec=sys,vers=3,nolock,proto=tcp",
                },
                RemoteMountDirPath = $"{storageAccount}/{storageContainer}",
                LocalMountDirPath = "/mnt/nfs-test",
            },
        },
    });

});
package main

import (
	"fmt"

	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		storageAccount := "ewfw3ggwegwg"
		storageContainer := "test"
		_, err := databricks.NewCluster(ctx, "with_nfs", &databricks.ClusterArgs{
			ClusterMountInfos: databricks.ClusterClusterMountInfoArray{
				&databricks.ClusterClusterMountInfoArgs{
					NetworkFilesystemInfo: &databricks.ClusterClusterMountInfoNetworkFilesystemInfoArgs{
						ServerAddress: pulumi.Sprintf("%v.blob.core.windows.net", storageAccount),
						MountOptions:  pulumi.String("sec=sys,vers=3,nolock,proto=tcp"),
					},
					RemoteMountDirPath: pulumi.Sprintf("%v/%v", storageAccount, storageContainer),
					LocalMountDirPath:  pulumi.String("/mnt/nfs-test"),
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterClusterMountInfoArgs;
import com.pulumi.databricks.inputs.ClusterClusterMountInfoNetworkFilesystemInfoArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        final var storageAccount = "ewfw3ggwegwg";

        final var storageContainer = "test";

        var withNfs = new Cluster("withNfs", ClusterArgs.builder()
            .clusterMountInfos(ClusterClusterMountInfoArgs.builder()
                .networkFilesystemInfo(ClusterClusterMountInfoNetworkFilesystemInfoArgs.builder()
                    .serverAddress(String.format("%s.blob.core.windows.net", storageAccount))
                    .mountOptions("sec=sys,vers=3,nolock,proto=tcp")
                    .build())
                .remoteMountDirPath(String.format("%s/%s", storageAccount,storageContainer))
                .localMountDirPath("/mnt/nfs-test")
                .build())
            .build());

    }
}
resources:
  withNfs:
    type: databricks:Cluster
    name: with_nfs
    properties:
      clusterMountInfos:
        - networkFilesystemInfo:
            serverAddress: ${storageAccount}.blob.core.windows.net
            mountOptions: sec=sys,vers=3,nolock,proto=tcp
          remoteMountDirPath: ${storageAccount}/${storageContainer}
          localMountDirPath: /mnt/nfs-test
variables:
  storageAccount: ewfw3ggwegwg
  storageContainer: test
networkFilesystemInfo This property is required. ClusterClusterMountInfoNetworkFilesystemInfo
block specifying connection. It consists of:
remoteMountDirPath string
string specifying path to mount on the remote service.
local_mount_dir_path This property is required. str

path inside the Spark container.

For example, you can mount Azure Data Lake Storage container using the following code:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const storageAccount = "ewfw3ggwegwg"; const storageContainer = "test"; const withNfs = new databricks.Cluster("with_nfs", {clusterMountInfos: [{ networkFilesystemInfo: { serverAddress: ${storageAccount}.blob.core.windows.net, mountOptions: "sec=sys,vers=3,nolock,proto=tcp", }, remoteMountDirPath: ${storageAccount}/${storageContainer}, localMountDirPath: "/mnt/nfs-test", }]});

import pulumi
import pulumi_databricks as databricks

storage_account = "ewfw3ggwegwg"
storage_container = "test"
with_nfs = databricks.Cluster("with_nfs", cluster_mount_infos=[{
    "network_filesystem_info": {
        "server_address": f"{storage_account}.blob.core.windows.net",
        "mount_options": "sec=sys,vers=3,nolock,proto=tcp",
    },
    "remote_mount_dir_path": f"{storage_account}/{storage_container}",
    "local_mount_dir_path": "/mnt/nfs-test",
}])
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var storageAccount = "ewfw3ggwegwg";

    var storageContainer = "test";

    var withNfs = new Databricks.Cluster("with_nfs", new()
    {
        ClusterMountInfos = new[]
        {
            new Databricks.Inputs.ClusterClusterMountInfoArgs
            {
                NetworkFilesystemInfo = new Databricks.Inputs.ClusterClusterMountInfoNetworkFilesystemInfoArgs
                {
                    ServerAddress = $"{storageAccount}.blob.core.windows.net",
                    MountOptions = "sec=sys,vers=3,nolock,proto=tcp",
                },
                RemoteMountDirPath = $"{storageAccount}/{storageContainer}",
                LocalMountDirPath = "/mnt/nfs-test",
            },
        },
    });

});
package main

import (
	"fmt"

	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		storageAccount := "ewfw3ggwegwg"
		storageContainer := "test"
		_, err := databricks.NewCluster(ctx, "with_nfs", &databricks.ClusterArgs{
			ClusterMountInfos: databricks.ClusterClusterMountInfoArray{
				&databricks.ClusterClusterMountInfoArgs{
					NetworkFilesystemInfo: &databricks.ClusterClusterMountInfoNetworkFilesystemInfoArgs{
						ServerAddress: pulumi.Sprintf("%v.blob.core.windows.net", storageAccount),
						MountOptions:  pulumi.String("sec=sys,vers=3,nolock,proto=tcp"),
					},
					RemoteMountDirPath: pulumi.Sprintf("%v/%v", storageAccount, storageContainer),
					LocalMountDirPath:  pulumi.String("/mnt/nfs-test"),
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterClusterMountInfoArgs;
import com.pulumi.databricks.inputs.ClusterClusterMountInfoNetworkFilesystemInfoArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        final var storageAccount = "ewfw3ggwegwg";

        final var storageContainer = "test";

        var withNfs = new Cluster("withNfs", ClusterArgs.builder()
            .clusterMountInfos(ClusterClusterMountInfoArgs.builder()
                .networkFilesystemInfo(ClusterClusterMountInfoNetworkFilesystemInfoArgs.builder()
                    .serverAddress(String.format("%s.blob.core.windows.net", storageAccount))
                    .mountOptions("sec=sys,vers=3,nolock,proto=tcp")
                    .build())
                .remoteMountDirPath(String.format("%s/%s", storageAccount,storageContainer))
                .localMountDirPath("/mnt/nfs-test")
                .build())
            .build());

    }
}
resources:
  withNfs:
    type: databricks:Cluster
    name: with_nfs
    properties:
      clusterMountInfos:
        - networkFilesystemInfo:
            serverAddress: ${storageAccount}.blob.core.windows.net
            mountOptions: sec=sys,vers=3,nolock,proto=tcp
          remoteMountDirPath: ${storageAccount}/${storageContainer}
          localMountDirPath: /mnt/nfs-test
variables:
  storageAccount: ewfw3ggwegwg
  storageContainer: test
network_filesystem_info This property is required. ClusterClusterMountInfoNetworkFilesystemInfo
block specifying connection. It consists of:
remote_mount_dir_path str
string specifying path to mount on the remote service.
localMountDirPath This property is required. String

path inside the Spark container.

For example, you can mount Azure Data Lake Storage container using the following code:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const storageAccount = "ewfw3ggwegwg"; const storageContainer = "test"; const withNfs = new databricks.Cluster("with_nfs", {clusterMountInfos: [{ networkFilesystemInfo: { serverAddress: ${storageAccount}.blob.core.windows.net, mountOptions: "sec=sys,vers=3,nolock,proto=tcp", }, remoteMountDirPath: ${storageAccount}/${storageContainer}, localMountDirPath: "/mnt/nfs-test", }]});

import pulumi
import pulumi_databricks as databricks

storage_account = "ewfw3ggwegwg"
storage_container = "test"
with_nfs = databricks.Cluster("with_nfs", cluster_mount_infos=[{
    "network_filesystem_info": {
        "server_address": f"{storage_account}.blob.core.windows.net",
        "mount_options": "sec=sys,vers=3,nolock,proto=tcp",
    },
    "remote_mount_dir_path": f"{storage_account}/{storage_container}",
    "local_mount_dir_path": "/mnt/nfs-test",
}])
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var storageAccount = "ewfw3ggwegwg";

    var storageContainer = "test";

    var withNfs = new Databricks.Cluster("with_nfs", new()
    {
        ClusterMountInfos = new[]
        {
            new Databricks.Inputs.ClusterClusterMountInfoArgs
            {
                NetworkFilesystemInfo = new Databricks.Inputs.ClusterClusterMountInfoNetworkFilesystemInfoArgs
                {
                    ServerAddress = $"{storageAccount}.blob.core.windows.net",
                    MountOptions = "sec=sys,vers=3,nolock,proto=tcp",
                },
                RemoteMountDirPath = $"{storageAccount}/{storageContainer}",
                LocalMountDirPath = "/mnt/nfs-test",
            },
        },
    });

});
package main

import (
	"fmt"

	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		storageAccount := "ewfw3ggwegwg"
		storageContainer := "test"
		_, err := databricks.NewCluster(ctx, "with_nfs", &databricks.ClusterArgs{
			ClusterMountInfos: databricks.ClusterClusterMountInfoArray{
				&databricks.ClusterClusterMountInfoArgs{
					NetworkFilesystemInfo: &databricks.ClusterClusterMountInfoNetworkFilesystemInfoArgs{
						ServerAddress: pulumi.Sprintf("%v.blob.core.windows.net", storageAccount),
						MountOptions:  pulumi.String("sec=sys,vers=3,nolock,proto=tcp"),
					},
					RemoteMountDirPath: pulumi.Sprintf("%v/%v", storageAccount, storageContainer),
					LocalMountDirPath:  pulumi.String("/mnt/nfs-test"),
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterClusterMountInfoArgs;
import com.pulumi.databricks.inputs.ClusterClusterMountInfoNetworkFilesystemInfoArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        final var storageAccount = "ewfw3ggwegwg";

        final var storageContainer = "test";

        var withNfs = new Cluster("withNfs", ClusterArgs.builder()
            .clusterMountInfos(ClusterClusterMountInfoArgs.builder()
                .networkFilesystemInfo(ClusterClusterMountInfoNetworkFilesystemInfoArgs.builder()
                    .serverAddress(String.format("%s.blob.core.windows.net", storageAccount))
                    .mountOptions("sec=sys,vers=3,nolock,proto=tcp")
                    .build())
                .remoteMountDirPath(String.format("%s/%s", storageAccount,storageContainer))
                .localMountDirPath("/mnt/nfs-test")
                .build())
            .build());

    }
}
resources:
  withNfs:
    type: databricks:Cluster
    name: with_nfs
    properties:
      clusterMountInfos:
        - networkFilesystemInfo:
            serverAddress: ${storageAccount}.blob.core.windows.net
            mountOptions: sec=sys,vers=3,nolock,proto=tcp
          remoteMountDirPath: ${storageAccount}/${storageContainer}
          localMountDirPath: /mnt/nfs-test
variables:
  storageAccount: ewfw3ggwegwg
  storageContainer: test
networkFilesystemInfo This property is required. Property Map
block specifying connection. It consists of:
remoteMountDirPath String
string specifying path to mount on the remote service.

ClusterClusterMountInfoNetworkFilesystemInfo
, ClusterClusterMountInfoNetworkFilesystemInfoArgs

ServerAddress This property is required. string
host name.
MountOptions string
string that will be passed as options passed to the mount command.
ServerAddress This property is required. string
host name.
MountOptions string
string that will be passed as options passed to the mount command.
serverAddress This property is required. String
host name.
mountOptions String
string that will be passed as options passed to the mount command.
serverAddress This property is required. string
host name.
mountOptions string
string that will be passed as options passed to the mount command.
server_address This property is required. str
host name.
mount_options str
string that will be passed as options passed to the mount command.
serverAddress This property is required. String
host name.
mountOptions String
string that will be passed as options passed to the mount command.

ClusterDockerImage
, ClusterDockerImageArgs

Url This property is required. string
URL for the Docker image
BasicAuth ClusterDockerImageBasicAuth

basic_auth.username and basic_auth.password for Docker repository. Docker registry credentials are encrypted when they are stored in Databricks internal storage and when they are passed to a registry upon fetching Docker images at cluster launch. However, other authenticated and authorized API users of this workspace can access the username and password.

Example usage with azurerm_container_registry and docker_registry_image, that you can adapt to your specific use-case:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";
import * as docker from "@pulumi/docker";

const _this = new docker.index.RegistryImage("this", { build: [{}], name: ${thisAzurermContainerRegistry.loginServer}/sample:latest, }); const thisCluster = new databricks.Cluster("this", {dockerImage: { url: _this.name, basicAuth: { username: thisAzurermContainerRegistry.adminUsername, password: thisAzurermContainerRegistry.adminPassword, }, }});

import pulumi
import pulumi_databricks as databricks
import pulumi_docker as docker

this = docker.index.RegistryImage("this",
    build=[{}],
    name=f{this_azurerm_container_registry.login_server}/sample:latest)
this_cluster = databricks.Cluster("this", docker_image={
    "url": this["name"],
    "basic_auth": {
        "username": this_azurerm_container_registry["adminUsername"],
        "password": this_azurerm_container_registry["adminPassword"],
    },
})
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;
using Docker = Pulumi.Docker;

return await Deployment.RunAsync(() => 
{
    var @this = new Docker.Index.RegistryImage("this", new()
    {
        Build = new[]
        {
            null,
        },
        Name = $"{thisAzurermContainerRegistry.LoginServer}/sample:latest",
    });

    var thisCluster = new Databricks.Cluster("this", new()
    {
        DockerImage = new Databricks.Inputs.ClusterDockerImageArgs
        {
            Url = @this.Name,
            BasicAuth = new Databricks.Inputs.ClusterDockerImageBasicAuthArgs
            {
                Username = thisAzurermContainerRegistry.AdminUsername,
                Password = thisAzurermContainerRegistry.AdminPassword,
            },
        },
    });

});
package main

import (
	"fmt"

	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi-docker/sdk/v4/go/docker"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		this, err := docker.NewRegistryImage(ctx, "this", &docker.RegistryImageArgs{
			Build: []map[string]interface{}{
				map[string]interface{}{},
			},
			Name: fmt.Sprintf("%v/sample:latest", thisAzurermContainerRegistry.LoginServer),
		})
		if err != nil {
			return err
		}
		_, err = databricks.NewCluster(ctx, "this", &databricks.ClusterArgs{
			DockerImage: &databricks.ClusterDockerImageArgs{
				Url: this.Name,
				BasicAuth: &databricks.ClusterDockerImageBasicAuthArgs{
					Username: pulumi.Any(thisAzurermContainerRegistry.AdminUsername),
					Password: pulumi.Any(thisAzurermContainerRegistry.AdminPassword),
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.docker.registryImage;
import com.pulumi.docker.RegistryImageArgs;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterDockerImageArgs;
import com.pulumi.databricks.inputs.ClusterDockerImageBasicAuthArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var this_ = new RegistryImage("this", RegistryImageArgs.builder()
            .build()
            .name(String.format("%s/sample:latest", thisAzurermContainerRegistry.loginServer()))
            .build());

        var thisCluster = new Cluster("thisCluster", ClusterArgs.builder()
            .dockerImage(ClusterDockerImageArgs.builder()
                .url(this_.name())
                .basicAuth(ClusterDockerImageBasicAuthArgs.builder()
                    .username(thisAzurermContainerRegistry.adminUsername())
                    .password(thisAzurermContainerRegistry.adminPassword())
                    .build())
                .build())
            .build());

    }
}
resources:
  this:
    type: docker:registryImage
    properties:
      build:
        - {}
      name: ${thisAzurermContainerRegistry.loginServer}/sample:latest
  thisCluster:
    type: databricks:Cluster
    name: this
    properties:
      dockerImage:
        url: ${this.name}
        basicAuth:
          username: ${thisAzurermContainerRegistry.adminUsername}
          password: ${thisAzurermContainerRegistry.adminPassword}
Url This property is required. string
URL for the Docker image
BasicAuth ClusterDockerImageBasicAuth

basic_auth.username and basic_auth.password for Docker repository. Docker registry credentials are encrypted when they are stored in Databricks internal storage and when they are passed to a registry upon fetching Docker images at cluster launch. However, other authenticated and authorized API users of this workspace can access the username and password.

Example usage with azurerm_container_registry and docker_registry_image, that you can adapt to your specific use-case:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";
import * as docker from "@pulumi/docker";

const _this = new docker.index.RegistryImage("this", { build: [{}], name: ${thisAzurermContainerRegistry.loginServer}/sample:latest, }); const thisCluster = new databricks.Cluster("this", {dockerImage: { url: _this.name, basicAuth: { username: thisAzurermContainerRegistry.adminUsername, password: thisAzurermContainerRegistry.adminPassword, }, }});

import pulumi
import pulumi_databricks as databricks
import pulumi_docker as docker

this = docker.index.RegistryImage("this",
    build=[{}],
    name=f{this_azurerm_container_registry.login_server}/sample:latest)
this_cluster = databricks.Cluster("this", docker_image={
    "url": this["name"],
    "basic_auth": {
        "username": this_azurerm_container_registry["adminUsername"],
        "password": this_azurerm_container_registry["adminPassword"],
    },
})
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;
using Docker = Pulumi.Docker;

return await Deployment.RunAsync(() => 
{
    var @this = new Docker.Index.RegistryImage("this", new()
    {
        Build = new[]
        {
            null,
        },
        Name = $"{thisAzurermContainerRegistry.LoginServer}/sample:latest",
    });

    var thisCluster = new Databricks.Cluster("this", new()
    {
        DockerImage = new Databricks.Inputs.ClusterDockerImageArgs
        {
            Url = @this.Name,
            BasicAuth = new Databricks.Inputs.ClusterDockerImageBasicAuthArgs
            {
                Username = thisAzurermContainerRegistry.AdminUsername,
                Password = thisAzurermContainerRegistry.AdminPassword,
            },
        },
    });

});
package main

import (
	"fmt"

	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi-docker/sdk/v4/go/docker"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		this, err := docker.NewRegistryImage(ctx, "this", &docker.RegistryImageArgs{
			Build: []map[string]interface{}{
				map[string]interface{}{},
			},
			Name: fmt.Sprintf("%v/sample:latest", thisAzurermContainerRegistry.LoginServer),
		})
		if err != nil {
			return err
		}
		_, err = databricks.NewCluster(ctx, "this", &databricks.ClusterArgs{
			DockerImage: &databricks.ClusterDockerImageArgs{
				Url: this.Name,
				BasicAuth: &databricks.ClusterDockerImageBasicAuthArgs{
					Username: pulumi.Any(thisAzurermContainerRegistry.AdminUsername),
					Password: pulumi.Any(thisAzurermContainerRegistry.AdminPassword),
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.docker.registryImage;
import com.pulumi.docker.RegistryImageArgs;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterDockerImageArgs;
import com.pulumi.databricks.inputs.ClusterDockerImageBasicAuthArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var this_ = new RegistryImage("this", RegistryImageArgs.builder()
            .build()
            .name(String.format("%s/sample:latest", thisAzurermContainerRegistry.loginServer()))
            .build());

        var thisCluster = new Cluster("thisCluster", ClusterArgs.builder()
            .dockerImage(ClusterDockerImageArgs.builder()
                .url(this_.name())
                .basicAuth(ClusterDockerImageBasicAuthArgs.builder()
                    .username(thisAzurermContainerRegistry.adminUsername())
                    .password(thisAzurermContainerRegistry.adminPassword())
                    .build())
                .build())
            .build());

    }
}
resources:
  this:
    type: docker:registryImage
    properties:
      build:
        - {}
      name: ${thisAzurermContainerRegistry.loginServer}/sample:latest
  thisCluster:
    type: databricks:Cluster
    name: this
    properties:
      dockerImage:
        url: ${this.name}
        basicAuth:
          username: ${thisAzurermContainerRegistry.adminUsername}
          password: ${thisAzurermContainerRegistry.adminPassword}
url This property is required. String
URL for the Docker image
basicAuth ClusterDockerImageBasicAuth

basic_auth.username and basic_auth.password for Docker repository. Docker registry credentials are encrypted when they are stored in Databricks internal storage and when they are passed to a registry upon fetching Docker images at cluster launch. However, other authenticated and authorized API users of this workspace can access the username and password.

Example usage with azurerm_container_registry and docker_registry_image, that you can adapt to your specific use-case:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";
import * as docker from "@pulumi/docker";

const _this = new docker.index.RegistryImage("this", { build: [{}], name: ${thisAzurermContainerRegistry.loginServer}/sample:latest, }); const thisCluster = new databricks.Cluster("this", {dockerImage: { url: _this.name, basicAuth: { username: thisAzurermContainerRegistry.adminUsername, password: thisAzurermContainerRegistry.adminPassword, }, }});

import pulumi
import pulumi_databricks as databricks
import pulumi_docker as docker

this = docker.index.RegistryImage("this",
    build=[{}],
    name=f{this_azurerm_container_registry.login_server}/sample:latest)
this_cluster = databricks.Cluster("this", docker_image={
    "url": this["name"],
    "basic_auth": {
        "username": this_azurerm_container_registry["adminUsername"],
        "password": this_azurerm_container_registry["adminPassword"],
    },
})
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;
using Docker = Pulumi.Docker;

return await Deployment.RunAsync(() => 
{
    var @this = new Docker.Index.RegistryImage("this", new()
    {
        Build = new[]
        {
            null,
        },
        Name = $"{thisAzurermContainerRegistry.LoginServer}/sample:latest",
    });

    var thisCluster = new Databricks.Cluster("this", new()
    {
        DockerImage = new Databricks.Inputs.ClusterDockerImageArgs
        {
            Url = @this.Name,
            BasicAuth = new Databricks.Inputs.ClusterDockerImageBasicAuthArgs
            {
                Username = thisAzurermContainerRegistry.AdminUsername,
                Password = thisAzurermContainerRegistry.AdminPassword,
            },
        },
    });

});
package main

import (
	"fmt"

	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi-docker/sdk/v4/go/docker"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		this, err := docker.NewRegistryImage(ctx, "this", &docker.RegistryImageArgs{
			Build: []map[string]interface{}{
				map[string]interface{}{},
			},
			Name: fmt.Sprintf("%v/sample:latest", thisAzurermContainerRegistry.LoginServer),
		})
		if err != nil {
			return err
		}
		_, err = databricks.NewCluster(ctx, "this", &databricks.ClusterArgs{
			DockerImage: &databricks.ClusterDockerImageArgs{
				Url: this.Name,
				BasicAuth: &databricks.ClusterDockerImageBasicAuthArgs{
					Username: pulumi.Any(thisAzurermContainerRegistry.AdminUsername),
					Password: pulumi.Any(thisAzurermContainerRegistry.AdminPassword),
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.docker.registryImage;
import com.pulumi.docker.RegistryImageArgs;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterDockerImageArgs;
import com.pulumi.databricks.inputs.ClusterDockerImageBasicAuthArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var this_ = new RegistryImage("this", RegistryImageArgs.builder()
            .build()
            .name(String.format("%s/sample:latest", thisAzurermContainerRegistry.loginServer()))
            .build());

        var thisCluster = new Cluster("thisCluster", ClusterArgs.builder()
            .dockerImage(ClusterDockerImageArgs.builder()
                .url(this_.name())
                .basicAuth(ClusterDockerImageBasicAuthArgs.builder()
                    .username(thisAzurermContainerRegistry.adminUsername())
                    .password(thisAzurermContainerRegistry.adminPassword())
                    .build())
                .build())
            .build());

    }
}
resources:
  this:
    type: docker:registryImage
    properties:
      build:
        - {}
      name: ${thisAzurermContainerRegistry.loginServer}/sample:latest
  thisCluster:
    type: databricks:Cluster
    name: this
    properties:
      dockerImage:
        url: ${this.name}
        basicAuth:
          username: ${thisAzurermContainerRegistry.adminUsername}
          password: ${thisAzurermContainerRegistry.adminPassword}
url This property is required. string
URL for the Docker image
basicAuth ClusterDockerImageBasicAuth

basic_auth.username and basic_auth.password for Docker repository. Docker registry credentials are encrypted when they are stored in Databricks internal storage and when they are passed to a registry upon fetching Docker images at cluster launch. However, other authenticated and authorized API users of this workspace can access the username and password.

Example usage with azurerm_container_registry and docker_registry_image, that you can adapt to your specific use-case:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";
import * as docker from "@pulumi/docker";

const _this = new docker.index.RegistryImage("this", { build: [{}], name: ${thisAzurermContainerRegistry.loginServer}/sample:latest, }); const thisCluster = new databricks.Cluster("this", {dockerImage: { url: _this.name, basicAuth: { username: thisAzurermContainerRegistry.adminUsername, password: thisAzurermContainerRegistry.adminPassword, }, }});

import pulumi
import pulumi_databricks as databricks
import pulumi_docker as docker

this = docker.index.RegistryImage("this",
    build=[{}],
    name=f{this_azurerm_container_registry.login_server}/sample:latest)
this_cluster = databricks.Cluster("this", docker_image={
    "url": this["name"],
    "basic_auth": {
        "username": this_azurerm_container_registry["adminUsername"],
        "password": this_azurerm_container_registry["adminPassword"],
    },
})
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;
using Docker = Pulumi.Docker;

return await Deployment.RunAsync(() => 
{
    var @this = new Docker.Index.RegistryImage("this", new()
    {
        Build = new[]
        {
            null,
        },
        Name = $"{thisAzurermContainerRegistry.LoginServer}/sample:latest",
    });

    var thisCluster = new Databricks.Cluster("this", new()
    {
        DockerImage = new Databricks.Inputs.ClusterDockerImageArgs
        {
            Url = @this.Name,
            BasicAuth = new Databricks.Inputs.ClusterDockerImageBasicAuthArgs
            {
                Username = thisAzurermContainerRegistry.AdminUsername,
                Password = thisAzurermContainerRegistry.AdminPassword,
            },
        },
    });

});
package main

import (
	"fmt"

	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi-docker/sdk/v4/go/docker"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		this, err := docker.NewRegistryImage(ctx, "this", &docker.RegistryImageArgs{
			Build: []map[string]interface{}{
				map[string]interface{}{},
			},
			Name: fmt.Sprintf("%v/sample:latest", thisAzurermContainerRegistry.LoginServer),
		})
		if err != nil {
			return err
		}
		_, err = databricks.NewCluster(ctx, "this", &databricks.ClusterArgs{
			DockerImage: &databricks.ClusterDockerImageArgs{
				Url: this.Name,
				BasicAuth: &databricks.ClusterDockerImageBasicAuthArgs{
					Username: pulumi.Any(thisAzurermContainerRegistry.AdminUsername),
					Password: pulumi.Any(thisAzurermContainerRegistry.AdminPassword),
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.docker.registryImage;
import com.pulumi.docker.RegistryImageArgs;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterDockerImageArgs;
import com.pulumi.databricks.inputs.ClusterDockerImageBasicAuthArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var this_ = new RegistryImage("this", RegistryImageArgs.builder()
            .build()
            .name(String.format("%s/sample:latest", thisAzurermContainerRegistry.loginServer()))
            .build());

        var thisCluster = new Cluster("thisCluster", ClusterArgs.builder()
            .dockerImage(ClusterDockerImageArgs.builder()
                .url(this_.name())
                .basicAuth(ClusterDockerImageBasicAuthArgs.builder()
                    .username(thisAzurermContainerRegistry.adminUsername())
                    .password(thisAzurermContainerRegistry.adminPassword())
                    .build())
                .build())
            .build());

    }
}
resources:
  this:
    type: docker:registryImage
    properties:
      build:
        - {}
      name: ${thisAzurermContainerRegistry.loginServer}/sample:latest
  thisCluster:
    type: databricks:Cluster
    name: this
    properties:
      dockerImage:
        url: ${this.name}
        basicAuth:
          username: ${thisAzurermContainerRegistry.adminUsername}
          password: ${thisAzurermContainerRegistry.adminPassword}
url This property is required. str
URL for the Docker image
basic_auth ClusterDockerImageBasicAuth

basic_auth.username and basic_auth.password for Docker repository. Docker registry credentials are encrypted when they are stored in Databricks internal storage and when they are passed to a registry upon fetching Docker images at cluster launch. However, other authenticated and authorized API users of this workspace can access the username and password.

Example usage with azurerm_container_registry and docker_registry_image, that you can adapt to your specific use-case:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";
import * as docker from "@pulumi/docker";

const _this = new docker.index.RegistryImage("this", { build: [{}], name: ${thisAzurermContainerRegistry.loginServer}/sample:latest, }); const thisCluster = new databricks.Cluster("this", {dockerImage: { url: _this.name, basicAuth: { username: thisAzurermContainerRegistry.adminUsername, password: thisAzurermContainerRegistry.adminPassword, }, }});

import pulumi
import pulumi_databricks as databricks
import pulumi_docker as docker

this = docker.index.RegistryImage("this",
    build=[{}],
    name=f{this_azurerm_container_registry.login_server}/sample:latest)
this_cluster = databricks.Cluster("this", docker_image={
    "url": this["name"],
    "basic_auth": {
        "username": this_azurerm_container_registry["adminUsername"],
        "password": this_azurerm_container_registry["adminPassword"],
    },
})
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;
using Docker = Pulumi.Docker;

return await Deployment.RunAsync(() => 
{
    var @this = new Docker.Index.RegistryImage("this", new()
    {
        Build = new[]
        {
            null,
        },
        Name = $"{thisAzurermContainerRegistry.LoginServer}/sample:latest",
    });

    var thisCluster = new Databricks.Cluster("this", new()
    {
        DockerImage = new Databricks.Inputs.ClusterDockerImageArgs
        {
            Url = @this.Name,
            BasicAuth = new Databricks.Inputs.ClusterDockerImageBasicAuthArgs
            {
                Username = thisAzurermContainerRegistry.AdminUsername,
                Password = thisAzurermContainerRegistry.AdminPassword,
            },
        },
    });

});
package main

import (
	"fmt"

	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi-docker/sdk/v4/go/docker"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		this, err := docker.NewRegistryImage(ctx, "this", &docker.RegistryImageArgs{
			Build: []map[string]interface{}{
				map[string]interface{}{},
			},
			Name: fmt.Sprintf("%v/sample:latest", thisAzurermContainerRegistry.LoginServer),
		})
		if err != nil {
			return err
		}
		_, err = databricks.NewCluster(ctx, "this", &databricks.ClusterArgs{
			DockerImage: &databricks.ClusterDockerImageArgs{
				Url: this.Name,
				BasicAuth: &databricks.ClusterDockerImageBasicAuthArgs{
					Username: pulumi.Any(thisAzurermContainerRegistry.AdminUsername),
					Password: pulumi.Any(thisAzurermContainerRegistry.AdminPassword),
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.docker.registryImage;
import com.pulumi.docker.RegistryImageArgs;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterDockerImageArgs;
import com.pulumi.databricks.inputs.ClusterDockerImageBasicAuthArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var this_ = new RegistryImage("this", RegistryImageArgs.builder()
            .build()
            .name(String.format("%s/sample:latest", thisAzurermContainerRegistry.loginServer()))
            .build());

        var thisCluster = new Cluster("thisCluster", ClusterArgs.builder()
            .dockerImage(ClusterDockerImageArgs.builder()
                .url(this_.name())
                .basicAuth(ClusterDockerImageBasicAuthArgs.builder()
                    .username(thisAzurermContainerRegistry.adminUsername())
                    .password(thisAzurermContainerRegistry.adminPassword())
                    .build())
                .build())
            .build());

    }
}
resources:
  this:
    type: docker:registryImage
    properties:
      build:
        - {}
      name: ${thisAzurermContainerRegistry.loginServer}/sample:latest
  thisCluster:
    type: databricks:Cluster
    name: this
    properties:
      dockerImage:
        url: ${this.name}
        basicAuth:
          username: ${thisAzurermContainerRegistry.adminUsername}
          password: ${thisAzurermContainerRegistry.adminPassword}
url This property is required. String
URL for the Docker image
basicAuth Property Map

basic_auth.username and basic_auth.password for Docker repository. Docker registry credentials are encrypted when they are stored in Databricks internal storage and when they are passed to a registry upon fetching Docker images at cluster launch. However, other authenticated and authorized API users of this workspace can access the username and password.

Example usage with azurerm_container_registry and docker_registry_image, that you can adapt to your specific use-case:

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";
import * as docker from "@pulumi/docker";

const _this = new docker.index.RegistryImage("this", { build: [{}], name: ${thisAzurermContainerRegistry.loginServer}/sample:latest, }); const thisCluster = new databricks.Cluster("this", {dockerImage: { url: _this.name, basicAuth: { username: thisAzurermContainerRegistry.adminUsername, password: thisAzurermContainerRegistry.adminPassword, }, }});

import pulumi
import pulumi_databricks as databricks
import pulumi_docker as docker

this = docker.index.RegistryImage("this",
    build=[{}],
    name=f{this_azurerm_container_registry.login_server}/sample:latest)
this_cluster = databricks.Cluster("this", docker_image={
    "url": this["name"],
    "basic_auth": {
        "username": this_azurerm_container_registry["adminUsername"],
        "password": this_azurerm_container_registry["adminPassword"],
    },
})
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;
using Docker = Pulumi.Docker;

return await Deployment.RunAsync(() => 
{
    var @this = new Docker.Index.RegistryImage("this", new()
    {
        Build = new[]
        {
            null,
        },
        Name = $"{thisAzurermContainerRegistry.LoginServer}/sample:latest",
    });

    var thisCluster = new Databricks.Cluster("this", new()
    {
        DockerImage = new Databricks.Inputs.ClusterDockerImageArgs
        {
            Url = @this.Name,
            BasicAuth = new Databricks.Inputs.ClusterDockerImageBasicAuthArgs
            {
                Username = thisAzurermContainerRegistry.AdminUsername,
                Password = thisAzurermContainerRegistry.AdminPassword,
            },
        },
    });

});
package main

import (
	"fmt"

	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi-docker/sdk/v4/go/docker"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		this, err := docker.NewRegistryImage(ctx, "this", &docker.RegistryImageArgs{
			Build: []map[string]interface{}{
				map[string]interface{}{},
			},
			Name: fmt.Sprintf("%v/sample:latest", thisAzurermContainerRegistry.LoginServer),
		})
		if err != nil {
			return err
		}
		_, err = databricks.NewCluster(ctx, "this", &databricks.ClusterArgs{
			DockerImage: &databricks.ClusterDockerImageArgs{
				Url: this.Name,
				BasicAuth: &databricks.ClusterDockerImageBasicAuthArgs{
					Username: pulumi.Any(thisAzurermContainerRegistry.AdminUsername),
					Password: pulumi.Any(thisAzurermContainerRegistry.AdminPassword),
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.docker.registryImage;
import com.pulumi.docker.RegistryImageArgs;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterDockerImageArgs;
import com.pulumi.databricks.inputs.ClusterDockerImageBasicAuthArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var this_ = new RegistryImage("this", RegistryImageArgs.builder()
            .build()
            .name(String.format("%s/sample:latest", thisAzurermContainerRegistry.loginServer()))
            .build());

        var thisCluster = new Cluster("thisCluster", ClusterArgs.builder()
            .dockerImage(ClusterDockerImageArgs.builder()
                .url(this_.name())
                .basicAuth(ClusterDockerImageBasicAuthArgs.builder()
                    .username(thisAzurermContainerRegistry.adminUsername())
                    .password(thisAzurermContainerRegistry.adminPassword())
                    .build())
                .build())
            .build());

    }
}
resources:
  this:
    type: docker:registryImage
    properties:
      build:
        - {}
      name: ${thisAzurermContainerRegistry.loginServer}/sample:latest
  thisCluster:
    type: databricks:Cluster
    name: this
    properties:
      dockerImage:
        url: ${this.name}
        basicAuth:
          username: ${thisAzurermContainerRegistry.adminUsername}
          password: ${thisAzurermContainerRegistry.adminPassword}

ClusterDockerImageBasicAuth
, ClusterDockerImageBasicAuthArgs

Password This property is required. string
Username This property is required. string
Password This property is required. string
Username This property is required. string
password This property is required. String
username This property is required. String
password This property is required. string
username This property is required. string
password This property is required. str
username This property is required. str
password This property is required. String
username This property is required. String

ClusterGcpAttributes
, ClusterGcpAttributesArgs

Availability string
Availability type used for all nodes. Valid values are PREEMPTIBLE_GCP, PREEMPTIBLE_WITH_FALLBACK_GCP and ON_DEMAND_GCP, default: ON_DEMAND_GCP.
BootDiskSize int
Boot disk size in GB
GoogleServiceAccount string
Google Service Account email address that the cluster uses to authenticate with Google Identity. This field is used for authentication with the GCS and BigQuery data sources.
LocalSsdCount int
Number of local SSD disks (each is 375GB in size) that will be attached to each node of the cluster.
UsePreemptibleExecutors bool
if we should use preemptible executors (GCP documentation). Warning: this field is deprecated in favor of availability, and will be removed soon.
ZoneId string
Identifier for the availability zone in which the cluster resides. This can be one of the following:

  • HA (default): High availability, spread nodes across availability zones for a Databricks deployment region.
  • AUTO: Databricks picks an availability zone to schedule the cluster on.
  • name of a GCP availability zone: pick one of the available zones from the list of available availability zones.
Availability string
Availability type used for all nodes. Valid values are PREEMPTIBLE_GCP, PREEMPTIBLE_WITH_FALLBACK_GCP and ON_DEMAND_GCP, default: ON_DEMAND_GCP.
BootDiskSize int
Boot disk size in GB
GoogleServiceAccount string
Google Service Account email address that the cluster uses to authenticate with Google Identity. This field is used for authentication with the GCS and BigQuery data sources.
LocalSsdCount int
Number of local SSD disks (each is 375GB in size) that will be attached to each node of the cluster.
UsePreemptibleExecutors bool
if we should use preemptible executors (GCP documentation). Warning: this field is deprecated in favor of availability, and will be removed soon.
ZoneId string
Identifier for the availability zone in which the cluster resides. This can be one of the following:

  • HA (default): High availability, spread nodes across availability zones for a Databricks deployment region.
  • AUTO: Databricks picks an availability zone to schedule the cluster on.
  • name of a GCP availability zone: pick one of the available zones from the list of available availability zones.
availability String
Availability type used for all nodes. Valid values are PREEMPTIBLE_GCP, PREEMPTIBLE_WITH_FALLBACK_GCP and ON_DEMAND_GCP, default: ON_DEMAND_GCP.
bootDiskSize Integer
Boot disk size in GB
googleServiceAccount String
Google Service Account email address that the cluster uses to authenticate with Google Identity. This field is used for authentication with the GCS and BigQuery data sources.
localSsdCount Integer
Number of local SSD disks (each is 375GB in size) that will be attached to each node of the cluster.
usePreemptibleExecutors Boolean
if we should use preemptible executors (GCP documentation). Warning: this field is deprecated in favor of availability, and will be removed soon.
zoneId String
Identifier for the availability zone in which the cluster resides. This can be one of the following:

  • HA (default): High availability, spread nodes across availability zones for a Databricks deployment region.
  • AUTO: Databricks picks an availability zone to schedule the cluster on.
  • name of a GCP availability zone: pick one of the available zones from the list of available availability zones.
availability string
Availability type used for all nodes. Valid values are PREEMPTIBLE_GCP, PREEMPTIBLE_WITH_FALLBACK_GCP and ON_DEMAND_GCP, default: ON_DEMAND_GCP.
bootDiskSize number
Boot disk size in GB
googleServiceAccount string
Google Service Account email address that the cluster uses to authenticate with Google Identity. This field is used for authentication with the GCS and BigQuery data sources.
localSsdCount number
Number of local SSD disks (each is 375GB in size) that will be attached to each node of the cluster.
usePreemptibleExecutors boolean
if we should use preemptible executors (GCP documentation). Warning: this field is deprecated in favor of availability, and will be removed soon.
zoneId string
Identifier for the availability zone in which the cluster resides. This can be one of the following:

  • HA (default): High availability, spread nodes across availability zones for a Databricks deployment region.
  • AUTO: Databricks picks an availability zone to schedule the cluster on.
  • name of a GCP availability zone: pick one of the available zones from the list of available availability zones.
availability str
Availability type used for all nodes. Valid values are PREEMPTIBLE_GCP, PREEMPTIBLE_WITH_FALLBACK_GCP and ON_DEMAND_GCP, default: ON_DEMAND_GCP.
boot_disk_size int
Boot disk size in GB
google_service_account str
Google Service Account email address that the cluster uses to authenticate with Google Identity. This field is used for authentication with the GCS and BigQuery data sources.
local_ssd_count int
Number of local SSD disks (each is 375GB in size) that will be attached to each node of the cluster.
use_preemptible_executors bool
if we should use preemptible executors (GCP documentation). Warning: this field is deprecated in favor of availability, and will be removed soon.
zone_id str
Identifier for the availability zone in which the cluster resides. This can be one of the following:

  • HA (default): High availability, spread nodes across availability zones for a Databricks deployment region.
  • AUTO: Databricks picks an availability zone to schedule the cluster on.
  • name of a GCP availability zone: pick one of the available zones from the list of available availability zones.
availability String
Availability type used for all nodes. Valid values are PREEMPTIBLE_GCP, PREEMPTIBLE_WITH_FALLBACK_GCP and ON_DEMAND_GCP, default: ON_DEMAND_GCP.
bootDiskSize Number
Boot disk size in GB
googleServiceAccount String
Google Service Account email address that the cluster uses to authenticate with Google Identity. This field is used for authentication with the GCS and BigQuery data sources.
localSsdCount Number
Number of local SSD disks (each is 375GB in size) that will be attached to each node of the cluster.
usePreemptibleExecutors Boolean
if we should use preemptible executors (GCP documentation). Warning: this field is deprecated in favor of availability, and will be removed soon.
zoneId String
Identifier for the availability zone in which the cluster resides. This can be one of the following:

  • HA (default): High availability, spread nodes across availability zones for a Databricks deployment region.
  • AUTO: Databricks picks an availability zone to schedule the cluster on.
  • name of a GCP availability zone: pick one of the available zones from the list of available availability zones.

ClusterInitScript
, ClusterInitScriptArgs

abfss Property Map
dbfs Property Map

Deprecated: For init scripts use 'volumes', 'workspace' or cloud storage location instead of 'dbfs'.

file Property Map
gcs Property Map
s3 Property Map
volumes Property Map
workspace Property Map

ClusterInitScriptAbfss
, ClusterInitScriptAbfssArgs

Destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
Destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. String
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. str
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. String
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.

ClusterInitScriptDbfs
, ClusterInitScriptDbfsArgs

Destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
Destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. String
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. str
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. String
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.

ClusterInitScriptFile
, ClusterInitScriptFileArgs

Destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
Destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. String
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. str
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. String
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.

ClusterInitScriptGcs
, ClusterInitScriptGcsArgs

Destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
Destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. String
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. str
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. String
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.

ClusterInitScriptS3
, ClusterInitScriptS3Args

Destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
CannedAcl string
Set canned access control list, e.g. bucket-owner-full-control. If canned_cal is set, the cluster instance profile must have s3:PutObjectAcl permission on the destination bucket and prefix. The full list of possible canned ACLs can be found here. By default, only the object owner gets full control. If you are using a cross-account role for writing data, you may want to set bucket-owner-full-control to make bucket owners able to read the logs.
EnableEncryption bool
Enable server-side encryption, false by default.
EncryptionType string
The encryption type, it could be sse-s3 or sse-kms. It is used only when encryption is enabled, and the default type is sse-s3.
Endpoint string
S3 endpoint, e.g. https://s3-us-west-2.amazonaws.com. Either region or endpoint needs to be set. If both are set, the endpoint is used.
KmsKey string
KMS key used if encryption is enabled and encryption type is set to sse-kms.
Region string
S3 region, e.g. us-west-2. Either region or endpoint must be set. If both are set, the endpoint is used.
Destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
CannedAcl string
Set canned access control list, e.g. bucket-owner-full-control. If canned_cal is set, the cluster instance profile must have s3:PutObjectAcl permission on the destination bucket and prefix. The full list of possible canned ACLs can be found here. By default, only the object owner gets full control. If you are using a cross-account role for writing data, you may want to set bucket-owner-full-control to make bucket owners able to read the logs.
EnableEncryption bool
Enable server-side encryption, false by default.
EncryptionType string
The encryption type, it could be sse-s3 or sse-kms. It is used only when encryption is enabled, and the default type is sse-s3.
Endpoint string
S3 endpoint, e.g. https://s3-us-west-2.amazonaws.com. Either region or endpoint needs to be set. If both are set, the endpoint is used.
KmsKey string
KMS key used if encryption is enabled and encryption type is set to sse-kms.
Region string
S3 region, e.g. us-west-2. Either region or endpoint must be set. If both are set, the endpoint is used.
destination This property is required. String
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
cannedAcl String
Set canned access control list, e.g. bucket-owner-full-control. If canned_cal is set, the cluster instance profile must have s3:PutObjectAcl permission on the destination bucket and prefix. The full list of possible canned ACLs can be found here. By default, only the object owner gets full control. If you are using a cross-account role for writing data, you may want to set bucket-owner-full-control to make bucket owners able to read the logs.
enableEncryption Boolean
Enable server-side encryption, false by default.
encryptionType String
The encryption type, it could be sse-s3 or sse-kms. It is used only when encryption is enabled, and the default type is sse-s3.
endpoint String
S3 endpoint, e.g. https://s3-us-west-2.amazonaws.com. Either region or endpoint needs to be set. If both are set, the endpoint is used.
kmsKey String
KMS key used if encryption is enabled and encryption type is set to sse-kms.
region String
S3 region, e.g. us-west-2. Either region or endpoint must be set. If both are set, the endpoint is used.
destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
cannedAcl string
Set canned access control list, e.g. bucket-owner-full-control. If canned_cal is set, the cluster instance profile must have s3:PutObjectAcl permission on the destination bucket and prefix. The full list of possible canned ACLs can be found here. By default, only the object owner gets full control. If you are using a cross-account role for writing data, you may want to set bucket-owner-full-control to make bucket owners able to read the logs.
enableEncryption boolean
Enable server-side encryption, false by default.
encryptionType string
The encryption type, it could be sse-s3 or sse-kms. It is used only when encryption is enabled, and the default type is sse-s3.
endpoint string
S3 endpoint, e.g. https://s3-us-west-2.amazonaws.com. Either region or endpoint needs to be set. If both are set, the endpoint is used.
kmsKey string
KMS key used if encryption is enabled and encryption type is set to sse-kms.
region string
S3 region, e.g. us-west-2. Either region or endpoint must be set. If both are set, the endpoint is used.
destination This property is required. str
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
canned_acl str
Set canned access control list, e.g. bucket-owner-full-control. If canned_cal is set, the cluster instance profile must have s3:PutObjectAcl permission on the destination bucket and prefix. The full list of possible canned ACLs can be found here. By default, only the object owner gets full control. If you are using a cross-account role for writing data, you may want to set bucket-owner-full-control to make bucket owners able to read the logs.
enable_encryption bool
Enable server-side encryption, false by default.
encryption_type str
The encryption type, it could be sse-s3 or sse-kms. It is used only when encryption is enabled, and the default type is sse-s3.
endpoint str
S3 endpoint, e.g. https://s3-us-west-2.amazonaws.com. Either region or endpoint needs to be set. If both are set, the endpoint is used.
kms_key str
KMS key used if encryption is enabled and encryption type is set to sse-kms.
region str
S3 region, e.g. us-west-2. Either region or endpoint must be set. If both are set, the endpoint is used.
destination This property is required. String
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
cannedAcl String
Set canned access control list, e.g. bucket-owner-full-control. If canned_cal is set, the cluster instance profile must have s3:PutObjectAcl permission on the destination bucket and prefix. The full list of possible canned ACLs can be found here. By default, only the object owner gets full control. If you are using a cross-account role for writing data, you may want to set bucket-owner-full-control to make bucket owners able to read the logs.
enableEncryption Boolean
Enable server-side encryption, false by default.
encryptionType String
The encryption type, it could be sse-s3 or sse-kms. It is used only when encryption is enabled, and the default type is sse-s3.
endpoint String
S3 endpoint, e.g. https://s3-us-west-2.amazonaws.com. Either region or endpoint needs to be set. If both are set, the endpoint is used.
kmsKey String
KMS key used if encryption is enabled and encryption type is set to sse-kms.
region String
S3 region, e.g. us-west-2. Either region or endpoint must be set. If both are set, the endpoint is used.

ClusterInitScriptVolumes
, ClusterInitScriptVolumesArgs

Destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
Destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. String
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. str
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. String
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.

ClusterInitScriptWorkspace
, ClusterInitScriptWorkspaceArgs

Destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
Destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. String
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. string
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. str
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.
destination This property is required. String
S3 destination, e.g., s3://my-bucket/some-prefix You must configure the cluster with an instance profile, and the instance profile must have write access to the destination. You cannot use AWS keys.

ClusterLibrary
, ClusterLibraryArgs

ClusterLibraryCran
, ClusterLibraryCranArgs

Package This property is required. string
Repo string
Package This property is required. string
Repo string
package_ This property is required. String
repo String
package This property is required. string
repo string
package This property is required. str
repo str
package This property is required. String
repo String

ClusterLibraryMaven
, ClusterLibraryMavenArgs

Coordinates This property is required. string
Exclusions List<string>
Repo string
Coordinates This property is required. string
Exclusions []string
Repo string
coordinates This property is required. String
exclusions List<String>
repo String
coordinates This property is required. string
exclusions string[]
repo string
coordinates This property is required. str
exclusions Sequence[str]
repo str
coordinates This property is required. String
exclusions List<String>
repo String

ClusterLibraryPypi
, ClusterLibraryPypiArgs

Package This property is required. string
Repo string
Package This property is required. string
Repo string
package_ This property is required. String
repo String
package This property is required. string
repo string
package This property is required. str
repo str
package This property is required. String
repo String

ClusterWorkloadType
, ClusterWorkloadTypeArgs

Clients This property is required. ClusterWorkloadTypeClients
Clients This property is required. ClusterWorkloadTypeClients
clients This property is required. ClusterWorkloadTypeClients
clients This property is required. ClusterWorkloadTypeClients
clients This property is required. ClusterWorkloadTypeClients
clients This property is required. Property Map

ClusterWorkloadTypeClients
, ClusterWorkloadTypeClientsArgs

Jobs bool
boolean flag defining if it's possible to run Databricks Jobs on this cluster. Default: true.

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const withNfs = new databricks.Cluster("with_nfs", {workloadType: { clients: { jobs: false, notebooks: true, }, }});

import pulumi
import pulumi_databricks as databricks

with_nfs = databricks.Cluster("with_nfs", workload_type={
    "clients": {
        "jobs": False,
        "notebooks": True,
    },
})
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var withNfs = new Databricks.Cluster("with_nfs", new()
    {
        WorkloadType = new Databricks.Inputs.ClusterWorkloadTypeArgs
        {
            Clients = new Databricks.Inputs.ClusterWorkloadTypeClientsArgs
            {
                Jobs = false,
                Notebooks = true,
            },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := databricks.NewCluster(ctx, "with_nfs", &databricks.ClusterArgs{
			WorkloadType: &databricks.ClusterWorkloadTypeArgs{
				Clients: &databricks.ClusterWorkloadTypeClientsArgs{
					Jobs:      pulumi.Bool(false),
					Notebooks: pulumi.Bool(true),
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterWorkloadTypeArgs;
import com.pulumi.databricks.inputs.ClusterWorkloadTypeClientsArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var withNfs = new Cluster("withNfs", ClusterArgs.builder()
            .workloadType(ClusterWorkloadTypeArgs.builder()
                .clients(ClusterWorkloadTypeClientsArgs.builder()
                    .jobs(false)
                    .notebooks(true)
                    .build())
                .build())
            .build());

    }
}
resources:
  withNfs:
    type: databricks:Cluster
    name: with_nfs
    properties:
      workloadType:
        clients:
          jobs: false
          notebooks: true
title="Optional"> <span id="notebooks_csharp">

Notebooks bool

boolean flag defining if it’s possible to run notebooks on this cluster. Default: true.

Jobs bool
boolean flag defining if it's possible to run Databricks Jobs on this cluster. Default: true.

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const withNfs = new databricks.Cluster("with_nfs", {workloadType: { clients: { jobs: false, notebooks: true, }, }});

import pulumi
import pulumi_databricks as databricks

with_nfs = databricks.Cluster("with_nfs", workload_type={
    "clients": {
        "jobs": False,
        "notebooks": True,
    },
})
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var withNfs = new Databricks.Cluster("with_nfs", new()
    {
        WorkloadType = new Databricks.Inputs.ClusterWorkloadTypeArgs
        {
            Clients = new Databricks.Inputs.ClusterWorkloadTypeClientsArgs
            {
                Jobs = false,
                Notebooks = true,
            },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := databricks.NewCluster(ctx, "with_nfs", &databricks.ClusterArgs{
			WorkloadType: &databricks.ClusterWorkloadTypeArgs{
				Clients: &databricks.ClusterWorkloadTypeClientsArgs{
					Jobs:      pulumi.Bool(false),
					Notebooks: pulumi.Bool(true),
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterWorkloadTypeArgs;
import com.pulumi.databricks.inputs.ClusterWorkloadTypeClientsArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var withNfs = new Cluster("withNfs", ClusterArgs.builder()
            .workloadType(ClusterWorkloadTypeArgs.builder()
                .clients(ClusterWorkloadTypeClientsArgs.builder()
                    .jobs(false)
                    .notebooks(true)
                    .build())
                .build())
            .build());

    }
}
resources:
  withNfs:
    type: databricks:Cluster
    name: with_nfs
    properties:
      workloadType:
        clients:
          jobs: false
          notebooks: true
title="Optional"> <span id="notebooks_go">

Notebooks bool

boolean flag defining if it’s possible to run notebooks on this cluster. Default: true.

jobs Boolean
boolean flag defining if it's possible to run Databricks Jobs on this cluster. Default: true.

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const withNfs = new databricks.Cluster("with_nfs", {workloadType: { clients: { jobs: false, notebooks: true, }, }});

import pulumi
import pulumi_databricks as databricks

with_nfs = databricks.Cluster("with_nfs", workload_type={
    "clients": {
        "jobs": False,
        "notebooks": True,
    },
})
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var withNfs = new Databricks.Cluster("with_nfs", new()
    {
        WorkloadType = new Databricks.Inputs.ClusterWorkloadTypeArgs
        {
            Clients = new Databricks.Inputs.ClusterWorkloadTypeClientsArgs
            {
                Jobs = false,
                Notebooks = true,
            },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := databricks.NewCluster(ctx, "with_nfs", &databricks.ClusterArgs{
			WorkloadType: &databricks.ClusterWorkloadTypeArgs{
				Clients: &databricks.ClusterWorkloadTypeClientsArgs{
					Jobs:      pulumi.Bool(false),
					Notebooks: pulumi.Bool(true),
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterWorkloadTypeArgs;
import com.pulumi.databricks.inputs.ClusterWorkloadTypeClientsArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var withNfs = new Cluster("withNfs", ClusterArgs.builder()
            .workloadType(ClusterWorkloadTypeArgs.builder()
                .clients(ClusterWorkloadTypeClientsArgs.builder()
                    .jobs(false)
                    .notebooks(true)
                    .build())
                .build())
            .build());

    }
}
resources:
  withNfs:
    type: databricks:Cluster
    name: with_nfs
    properties:
      workloadType:
        clients:
          jobs: false
          notebooks: true
title="Optional"> <span id="notebooks_java">

notebooks Boolean

boolean flag defining if it’s possible to run notebooks on this cluster. Default: true.

jobs boolean
boolean flag defining if it's possible to run Databricks Jobs on this cluster. Default: true.

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const withNfs = new databricks.Cluster("with_nfs", {workloadType: { clients: { jobs: false, notebooks: true, }, }});

import pulumi
import pulumi_databricks as databricks

with_nfs = databricks.Cluster("with_nfs", workload_type={
    "clients": {
        "jobs": False,
        "notebooks": True,
    },
})
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var withNfs = new Databricks.Cluster("with_nfs", new()
    {
        WorkloadType = new Databricks.Inputs.ClusterWorkloadTypeArgs
        {
            Clients = new Databricks.Inputs.ClusterWorkloadTypeClientsArgs
            {
                Jobs = false,
                Notebooks = true,
            },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := databricks.NewCluster(ctx, "with_nfs", &databricks.ClusterArgs{
			WorkloadType: &databricks.ClusterWorkloadTypeArgs{
				Clients: &databricks.ClusterWorkloadTypeClientsArgs{
					Jobs:      pulumi.Bool(false),
					Notebooks: pulumi.Bool(true),
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterWorkloadTypeArgs;
import com.pulumi.databricks.inputs.ClusterWorkloadTypeClientsArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var withNfs = new Cluster("withNfs", ClusterArgs.builder()
            .workloadType(ClusterWorkloadTypeArgs.builder()
                .clients(ClusterWorkloadTypeClientsArgs.builder()
                    .jobs(false)
                    .notebooks(true)
                    .build())
                .build())
            .build());

    }
}
resources:
  withNfs:
    type: databricks:Cluster
    name: with_nfs
    properties:
      workloadType:
        clients:
          jobs: false
          notebooks: true
title="Optional"> <span id="notebooks_nodejs">

notebooks boolean

boolean flag defining if it’s possible to run notebooks on this cluster. Default: true.

jobs bool
boolean flag defining if it's possible to run Databricks Jobs on this cluster. Default: true.

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const withNfs = new databricks.Cluster("with_nfs", {workloadType: { clients: { jobs: false, notebooks: true, }, }});

import pulumi
import pulumi_databricks as databricks

with_nfs = databricks.Cluster("with_nfs", workload_type={
    "clients": {
        "jobs": False,
        "notebooks": True,
    },
})
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var withNfs = new Databricks.Cluster("with_nfs", new()
    {
        WorkloadType = new Databricks.Inputs.ClusterWorkloadTypeArgs
        {
            Clients = new Databricks.Inputs.ClusterWorkloadTypeClientsArgs
            {
                Jobs = false,
                Notebooks = true,
            },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := databricks.NewCluster(ctx, "with_nfs", &databricks.ClusterArgs{
			WorkloadType: &databricks.ClusterWorkloadTypeArgs{
				Clients: &databricks.ClusterWorkloadTypeClientsArgs{
					Jobs:      pulumi.Bool(false),
					Notebooks: pulumi.Bool(true),
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterWorkloadTypeArgs;
import com.pulumi.databricks.inputs.ClusterWorkloadTypeClientsArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var withNfs = new Cluster("withNfs", ClusterArgs.builder()
            .workloadType(ClusterWorkloadTypeArgs.builder()
                .clients(ClusterWorkloadTypeClientsArgs.builder()
                    .jobs(false)
                    .notebooks(true)
                    .build())
                .build())
            .build());

    }
}
resources:
  withNfs:
    type: databricks:Cluster
    name: with_nfs
    properties:
      workloadType:
        clients:
          jobs: false
          notebooks: true
title="Optional"> <span id="notebooks_python">

notebooks bool

boolean flag defining if it’s possible to run notebooks on this cluster. Default: true.

jobs Boolean
boolean flag defining if it's possible to run Databricks Jobs on this cluster. Default: true.

import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";

const withNfs = new databricks.Cluster("with_nfs", {workloadType: { clients: { jobs: false, notebooks: true, }, }});

import pulumi
import pulumi_databricks as databricks

with_nfs = databricks.Cluster("with_nfs", workload_type={
    "clients": {
        "jobs": False,
        "notebooks": True,
    },
})
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;

return await Deployment.RunAsync(() => 
{
    var withNfs = new Databricks.Cluster("with_nfs", new()
    {
        WorkloadType = new Databricks.Inputs.ClusterWorkloadTypeArgs
        {
            Clients = new Databricks.Inputs.ClusterWorkloadTypeClientsArgs
            {
                Jobs = false,
                Notebooks = true,
            },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := databricks.NewCluster(ctx, "with_nfs", &databricks.ClusterArgs{
			WorkloadType: &databricks.ClusterWorkloadTypeArgs{
				Clients: &databricks.ClusterWorkloadTypeClientsArgs{
					Jobs:      pulumi.Bool(false),
					Notebooks: pulumi.Bool(true),
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.Cluster;
import com.pulumi.databricks.ClusterArgs;
import com.pulumi.databricks.inputs.ClusterWorkloadTypeArgs;
import com.pulumi.databricks.inputs.ClusterWorkloadTypeClientsArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var withNfs = new Cluster("withNfs", ClusterArgs.builder()
            .workloadType(ClusterWorkloadTypeArgs.builder()
                .clients(ClusterWorkloadTypeClientsArgs.builder()
                    .jobs(false)
                    .notebooks(true)
                    .build())
                .build())
            .build());

    }
}
resources:
  withNfs:
    type: databricks:Cluster
    name: with_nfs
    properties:
      workloadType:
        clients:
          jobs: false
          notebooks: true
title="Optional"> <span id="notebooks_yaml">

notebooks Boolean

boolean flag defining if it’s possible to run notebooks on this cluster. Default: true.

Package Details

Repository
databricks pulumi/pulumi-databricks
License
Apache-2.0
Notes
This Pulumi package is based on the databricks Terraform Provider.