referência de política de computação
Este artigo é uma referência para as definições de políticas do site compute. Os artigos incluem uma referência dos atributos de política e tipos de limitação disponíveis. Também há exemplos de políticas que você pode consultar para casos de uso comuns.
O que são definições de políticas?
As definições de política são regras de política individuais expressas em JSON. Uma definição pode adicionar uma regra a qualquer um dos atributos controlados com o clustering API. Por exemplo, essas definições definem um tempo de autoterminação de default, proíbem os usuários de usar o pool e impõem o uso de Photon:
{
"autotermination_minutes": {
"type": "unlimited",
"defaultValue": 4320,
"isOptional": true
},
"instance_pool_id": {
"type": "forbidden",
"hidden": true
},
"runtime_engine": {
"type": "fixed",
"value": "PHOTON",
"hidden": true
}
}
Só pode haver uma limitação por atributo. O caminho de um atributo reflete o nome do atributo da API. Para atributos aninhados, o caminho concatena os nomes dos atributos aninhados usando pontos. Os atributos que não estão definidos em uma definição de política não serão limitados.
Atributos suportados
As políticas suportam todos os atributos controlados com o clustering API. O tipo de restrição que você pode impor aos atributos pode variar de acordo com a configuração, com base no tipo e na relação com os elementos da interface do usuário. O senhor não pode usar políticas para definir as permissões do site compute.
O senhor também pode usar políticas para definir o máximo de DBUs por hora e o tipo de clustering. Consulte Caminhos de atributos virtuais.
A tabela a seguir lista os caminhos de atributos de política suportados:
Caminho do atributo | Tipo | Descrição |
---|---|---|
| número opcional | Quando oculto, remove o campo de número máximo worker da interface do usuário. |
| número opcional | Quando oculto, remove o campo de número mínimo worker da interface do usuário. |
| Número | Um valor de 0 representa nenhuma terminação automática. Quando oculto, remove a caixa de seleção de encerramento automático e a entrada de valor da interface do usuário. |
| string | Controla a disponibilidade do AWS ( |
| Número | O número de volumes do AWS EBS. |
| Número | O tamanho (em GiB) dos volumes do AWS EBS. |
| string | O tipo de volumes do AWS EBS. |
| Número | Controla o número de nós a serem colocados em instâncias sob demanda. |
| string | Controla o site AWS instance profile. |
| Número | Controla o preço máximo para instâncias spot do AWS. |
| string | Controla a ID da zona do AWS. |
| string | O URL de destino dos arquivos log. |
| string | A região para o local S3. |
| S3, DBFS ou NONE | O tipo de destino log. |
| string | O nome do clustering. |
| string | Controla valores específicos da tag anexando o nome da tag, por exemplo: |
| string | Define o modo de acesso do clustering. O Unity Catalog requer |
| string | A senha para a autenticação básica da imagem do Databricks Container Services. |
| string | O nome de usuário para a autenticação básica da imagem do Databricks Container Services. |
| string | Controla o URL da imagem do Databricks Container Services. Quando oculto, remove a seção Databricks Container Services da interface do usuário. |
| strings opcionais | Quando oculto, remove a seleção do tipo de nó do driver da interface do usuário. |
| boolean | Quando oculto, remove a caixa de seleção Enable autoscale local storage (Ativar armazenamento local de autoescala ) da interface do usuário. |
| boolean | Defina |
| string |
|
| string | Controla o pool usado pelos nós worker se |
| string | Se especificado, configura um pool diferente para o nó do driver e para os nós do worker. Se não for especificado, herda |
| string | Quando oculto, remove a seleção do tipo de nó worker da interface do usuário. |
| número opcional | Quando oculto, remove a especificação do número worker da interface do usuário. |
| string | Determina se o clustering usa Photon ou não. Os valores possíveis são |
| string | Controla quais usuários ou grupos podem ser atribuídos ao recurso compute. |
| strings opcionais | Controle valores de configuração específicos anexando o nome da configuração key. Por exemplo, |
| strings opcionais | Controle os valores específicos da variável de ambiente Spark anexando a variável de ambiente, por exemplo: |
| string | O nome da versão da imagem do Spark, conforme especificado pela API (o Databricks Runtime). O senhor também pode usar valores de política especiais que selecionam dinamicamente o Databricks Runtime. Consulte Valores especiais de política para a seleção do Databricks Runtime. |
| string |
|
| boolean | Define se o recurso compute pode ser usado para o trabalho. Consulte Impedir que o site compute seja usado com o Job. |
| boolean | Define se o recurso compute pode ser usado com o Notebook. Consulte Impedir que o site compute seja usado com o Job. |
Caminhos de atributos virtuais
Essa tabela inclui dois atributos sintéticos adicionais suportados pelas políticas:
Caminho do atributo | Tipo | Descrição |
---|---|---|
| Número | Atributo calculado que representa o máximo de DBUs que um recurso pode usar por hora, incluindo o nó do driver. Essa métrica é uma forma direta de controlar o custo no nível individual compute. Use com limitação de alcance. |
| string | Representa o tipo de clustering que pode ser criado:
Permitir ou bloquear tipos especificados de compute a serem criados a partir da política. Se o valor |
Valores de política especiais para a seleção do Databricks Runtime
O atributo spark_version
oferece suporte a valores especiais que mapeiam dinamicamente para uma versão do Databricks Runtime com base no conjunto atual de versões suportadas do Databricks Runtime.
Os seguintes valores podem ser usados no atributo spark_version
:
auto:latest
: Mapeia para a versão mais recente do GA Databricks Runtime.auto:latest-ml
: Mapeia para a versão mais recente do Databricks Runtime ML.auto:latest-lts
: Mapeia para a versão mais recente de suporte de longo prazo (LTS) do Databricks Runtime.auto:latest-lts-ml
: Mapeia para a versão mais recente do LTS Databricks Runtime ML.auto:prev-major
: Mapeia para a segunda versão mais recente do GA Databricks Runtime. Por exemplo, seauto:latest
for 14,2,auto:prev-major
será 13,3.auto:prev-major-ml
: Mapeia para a segunda versão mais recente do GA Databricks Runtime ML. Por exemplo, seauto:latest
for 14,2,auto:prev-major
será 13,3.auto:prev-lts
: Mapeia para a segunda versão mais recente do LTS Databricks Runtime. Por exemplo, seauto:latest-lts
for 13,3,auto:prev-lts
será 12,2.auto:prev-lts-ml
: Mapeia para a segunda versão mais recente do LTS Databricks Runtime ML. Por exemplo, seauto:latest-lts
for 13,3,auto:prev-lts
será 12,2.
O uso desses valores não faz com que o site compute seja atualizado automaticamente quando uma nova versão de tempo de execução é lançada. Um usuário deve editar explicitamente o compute para que a versão Databricks Runtime seja alterada.
Tipos de políticas compatíveis
Esta seção inclui uma referência para cada um dos tipos de políticas disponíveis. Há duas categorias de tipos de políticas: políticas fixas e políticas limitadoras.
Políticas fixas impedem a configuração do usuário em um atributo. Os dois tipos de políticas fixas são:
As políticas de limitação limitam as opções de um usuário para configurar um atributo. As políticas de limitação também permitem que o senhor defina valores default e torne os atributos opcionais. Consulte Campos adicionais de política de limitação.
Suas opções para limitar as políticas são:
- Política de lista de permissões
- Política de lista de bloqueio
- Política Regex
- Política de intervalo
- Política ilimitada
Política fixa
As políticas fixas limitam o atributo ao valor especificado. Para valores de atributo diferentes de numérico e booleano, o valor deve ser representado por ou conversível em uma cadeia de caracteres.
Com políticas fixas, você também pode ocultar o atributo da interface definindo o campo hidden
como true
.
interface FixedPolicy {
type: "fixed";
value: string | number | boolean;
hidden?: boolean;
}
Esse exemplo de política corrige a versão do Databricks Runtime e oculta o campo da UI do usuário:
{
"spark_version": { "type": "fixed", "value": "auto:latest-lts", "hidden": true }
}
Política proibida
Uma política proibida impede que os usuários configurem um atributo. As políticas proibidas são compatíveis somente com atributos opcionais.
interface ForbiddenPolicy {
type: "forbidden";
}
Essa política proíbe anexar o pool ao site compute para nós worker. também são proibidos para o nó do driver, pois o site driver_instance_pool_id
herda a política.
{
"instance_pool_id": { "type": "forbidden" }
}
Política de lista de permissões
Uma política de lista de permissões especifica uma lista de valores que o usuário pode escolher ao configurar um atributo.
interface AllowlistPolicy {
type: "allowlist";
values: (string | number | boolean)[];
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
Esse exemplo de lista de permissão permite que o usuário selecione entre duas versões do Databricks Runtime:
{
"spark_version": { "type": "allowlist", "values": ["13.3.x-scala2.12", "12.2.x-scala2.12"] }
}
Política de lista de bloqueio
A política da lista de bloqueio lista valores não permitidos. Como os valores devem ser correspondências exatas, essa política pode não funcionar conforme o esperado quando o atributo é tolerante na forma como o valor é representado (por exemplo, permitindo espaços à esquerda e à direita).
interface BlocklistPolicy {
type: "blocklist";
values: (string | number | boolean)[];
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
Este exemplo impede que o usuário selecione 7.3.x-scala2.12
como Databricks Runtime.
{
"spark_version": { "type": "blocklist", "values": ["7.3.x-scala2.12"] }
}
Política Regex
Uma política de regex limita os valores disponíveis aos que correspondem ao regex. Por segurança, certifique-se de que seu regex esteja ancorado no início e no fim do valor das cadeias de caracteres.
interface RegexPolicy {
type: "regex";
pattern: string;
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
Este exemplo limita as versões do Databricks Runtime que um usuário pode selecionar:
{
"spark_version": { "type": "regex", "pattern": "13\\.[3456].*" }
}
Política de alcance
Uma política de intervalo limita o valor a um intervalo especificado usando os campos minValue
e maxValue
. O valor deve ser um número decimal.
Os limites numéricos devem ser representáveis como um valor de ponto flutuante duplo. Para indicar a falta de um limite específico, você pode omitir minValue
ou maxValue
.
interface RangePolicy {
type: "range";
minValue?: number;
maxValue?: number;
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
Este exemplo limita a quantidade máxima de trabalhadores a 10:
{
"num_workers": { "type": "range", "maxValue": 10 }
}
Política ilimitada
A política ilimitada é usada para tornar os atributos obrigatórios ou para definir o valor default na interface do usuário.
interface UnlimitedPolicy {
type: "unlimited";
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
Este exemplo adiciona a tag COST_BUCKET
ao site compute:
{
"custom_tags.COST_BUCKET": { "type": "unlimited" }
}
Para definir um valor default para uma variável de configuração Spark, mas também permitir sua omissão (remoção):
{
"spark_conf.spark.my.conf": { "type": "unlimited", "isOptional": true, "defaultValue": "my_value" }
}
Campos de política limitantes adicionais
Para limitar os tipos de política, você pode especificar dois campos adicionais:
defaultValue
- O valor que é preenchido automaticamente na UI de criação do compute.isOptional
- Uma política de limitação em um atributo automaticamente o torna obrigatório. Para tornar o atributo opcional, defina o campoisOptional
comotrue
.
Os valores padrão não são aplicados automaticamente ao site compute criado com o clustering API. Para aplicar os valores do default usando o API, adicione o parâmetro apply_policy_default_values
à definição do compute e defina-o como true
.
Este exemplo de política especifica o valor default id1
para os nós pool e worker, mas o torna opcional. Ao criar o compute, o senhor pode selecionar um pool diferente ou optar por não usar um. Se driver_instance_pool_id
não for definido na política ou ao criar o compute, o mesmo pool será usado para os nós worker e o nó do driver.
{
"instance_pool_id": { "type": "unlimited", "isOptional": true, "defaultValue": "id1" }
}
Escrevendo políticas para atributos de matriz
Você pode especificar políticas para atributos de matriz de duas maneiras:
- Limitações genéricas para todos os elementos da matriz. Essas limitações usam o símbolo curinga
*
no caminho da política. - Limitações específicas para um elemento de matriz em um índice específico. Essas limitações usam um número no caminho.
Por exemplo, para o atributo de matriz init_scripts
, os caminhos genéricos começam com init_scripts.*
e
e os caminhos específicos com init_scripts.<n>
, em que <n>
é um índice inteiro na matriz (começando com 0).
Você pode combinar limitações genéricas e específicas. Nesse caso, a limitação genérica se aplica a
cada elemento da matriz que não tem uma limitação específica. Em cada caso, somente uma limitação de política será aplicada.
As seções a seguir mostram exemplos comuns que usam atributos de matriz.
Exigir entradas específicas de inclusão
Você não pode exigir valores específicos sem especificar o pedido. Por exemplo:
{
"init_scripts.0.volumes.destination": {
"type": "fixed",
"value": "<required-script-1>"
},
"init_scripts.1.volumes.destination": {
"type": "fixed",
"value": "<required-script-2>"
}
}
Exigir um valor fixo de toda a lista
{
"init_scripts.0.volumes.destination": {
"type": "fixed",
"value": "<required-script-1>"
},
"init_scripts.*.volumes.destination": {
"type": "forbidden"
}
}
Proibir totalmente o uso
{
"init_scripts.*.volumes.destination": {
"type": "forbidden"
}
}
Permitir entradas que sigam restrições específicas
{
"init_scripts.*.volumes.destination": {
"type": "regex",
"pattern": ".*<required-content>.*"
}
}
Corrigir um conjunto específico de script de inicialização
No caso de caminhos init_scripts
, a matriz pode conter uma das várias estruturas para as quais todas as variantes possíveis podem precisar ser tratadas, dependendo do caso de uso. Por exemplo, para exigir um conjunto específico de script de inicialização e não permitir qualquer variante da outra versão, o senhor pode usar o seguinte padrão:
{
"init_scripts.0.volumes.destination": {
"type": "fixed",
"value": "<volume-paths>"
},
"init_scripts.1.volumes.destination": {
"type": "fixed",
"value": "<volume-paths>"
},
"init_scripts.*.workspace.destination": {
"type": "forbidden"
},
"init_scripts.*.s3.destination": {
"type": "forbidden"
},
"init_scripts.*.file.destination": {
"type": "forbidden"
}
}
Exemplos de políticas
Esta seção inclui exemplos de políticas que você pode usar como referência para criar suas próprias políticas. O senhor também pode usar as Databricks famílias de políticas fornecidas pelo site como padrão para casos de uso de políticas comuns.
- Política geral do site compute
- Definir limites para a DLT pipeline compute
- Política simples de médio porte
- Job-política exclusiva
- Política externa de metastore
- Impedir que o site compute seja usado com o Job
- Remover a política de autoescala
- Aplicação de tags personalizadas
Política geral do site compute
Uma política compute de propósito geral destinada a orientar os usuários e restringir algumas funcionalidades, exigindo tags, restringindo o número máximo de instâncias e aplicando o tempo limite.
{
"instance_pool_id": {
"type": "forbidden",
"hidden": true
},
"spark_version": {
"type": "unlimited",
"defaultValue": "auto:latest-ml"
},
"node_type_id": {
"type": "allowlist",
"values": ["i3.xlarge", "i3.2xlarge", "i3.4xlarge"],
"defaultValue": "i3.2xlarge"
},
"driver_node_type_id": {
"type": "fixed",
"value": "i3.2xlarge",
"hidden": true
},
"autoscale.min_workers": {
"type": "fixed",
"value": 1,
"hidden": true
},
"autoscale.max_workers": {
"type": "range",
"maxValue": 25,
"defaultValue": 5
},
"enable_elastic_disk": {
"type": "fixed",
"value": true,
"hidden": true
},
"autotermination_minutes": {
"type": "fixed",
"value": 30,
"hidden": true
},
"custom_tags.team": {
"type": "fixed",
"value": "product"
}
}
Definir limites para a DLT pipeline compute
Ao usar políticas para configurar a DLT compute, Databricks recomenda aplicar uma única política a default
e maintenance
compute.
Para configurar uma política para pipeline compute, crie uma política com o campo cluster_type
definido como dlt
. O exemplo a seguir cria uma política mínima para um DLT compute:
{
"cluster_type": {
"type": "fixed",
"value": "dlt"
},
"num_workers": {
"type": "unlimited",
"defaultValue": 3,
"isOptional": true
},
"node_type_id": {
"type": "unlimited",
"isOptional": true
},
"spark_version": {
"type": "unlimited",
"hidden": true
}
}
Política simples de médio porte
Permite que os usuários criem um compute de tamanho médio com configuração mínima. O único campo obrigatório no momento da criação é o nome compute; o restante é fixo e oculto.
{
"instance_pool_id": {
"type": "forbidden",
"hidden": true
},
"spark_conf.spark.databricks.cluster.profile": {
"type": "forbidden",
"hidden": true
},
"autoscale.min_workers": {
"type": "fixed",
"value": 1,
"hidden": true
},
"autoscale.max_workers": {
"type": "fixed",
"value": 10,
"hidden": true
},
"autotermination_minutes": {
"type": "fixed",
"value": 60,
"hidden": true
},
"node_type_id": {
"type": "fixed",
"value": "i3.xlarge",
"hidden": true
},
"driver_node_type_id": {
"type": "fixed",
"value": "i3.xlarge",
"hidden": true
},
"spark_version": {
"type": "fixed",
"value": "auto:latest-ml",
"hidden": true
},
"enable_elastic_disk": {
"type": "fixed",
"value": false,
"hidden": true
},
"custom_tags.team": {
"type": "fixed",
"value": "product"
}
}
Job-política exclusiva
Permite que os usuários criem o Job compute para executar o Job. Os usuários não podem criar compute para todos os fins usando essa política.
{
"cluster_type": {
"type": "fixed",
"value": "job"
},
"dbus_per_hour": {
"type": "range",
"maxValue": 100
},
"instance_pool_id": {
"type": "forbidden",
"hidden": true
},
"num_workers": {
"type": "range",
"minValue": 1
},
"node_type_id": {
"type": "regex",
"pattern": "[rmci][3-5][rnad]*.[0-8]{0,1}xlarge"
},
"driver_node_type_id": {
"type": "regex",
"pattern": "[rmci][3-5][rnad]*.[0-8]{0,1}xlarge"
},
"spark_version": {
"type": "unlimited",
"defaultValue": "auto:latest-lts"
},
"custom_tags.team": {
"type": "fixed",
"value": "product"
}
}
Política externa de metastore
Permite que os usuários criem o site compute com um metastore definido pelo administrador já anexado. Isso é útil para permitir que os usuários criem seus próprios compute sem exigir configuração adicional.
{
"spark_conf.spark.hadoop.javax.jdo.option.ConnectionURL": {
"type": "fixed",
"value": "jdbc:sqlserver://<jdbc-url>"
},
"spark_conf.spark.hadoop.javax.jdo.option.ConnectionDriverName": {
"type": "fixed",
"value": "com.microsoft.sqlserver.jdbc.SQLServerDriver"
},
"spark_conf.spark.databricks.delta.preview.enabled": {
"type": "fixed",
"value": "true"
},
"spark_conf.spark.hadoop.javax.jdo.option.ConnectionUserName": {
"type": "fixed",
"value": "<metastore-user>"
},
"spark_conf.spark.hadoop.javax.jdo.option.ConnectionPassword": {
"type": "fixed",
"value": "<metastore-password>"
}
}
Impedir que o site compute seja usado com o Job
Essa política impede que os usuários usem o site compute para executar o trabalho. Os usuários só poderão usar o compute com o Notebook.
{
"workload_type.clients.notebooks": {
"type": "fixed",
"value": true
},
"workload_type.clients.jobs": {
"type": "fixed",
"value": false
}
}
Remover a política de autoescala
Essa política desativa a autoescala e permite que o usuário defina o número de trabalhadores dentro de um determinado intervalo.
{
"num_workers": {
"type": "range",
"maxValue": 25,
"minValue": 1,
"defaultValue": 5
}
}
Aplicação de tags personalizadas
Para adicionar uma regra de tag compute a uma política, use o atributo custom_tags.<tag-name>
.
Por exemplo, qualquer usuário que use essa política precisa preencher uma tag COST_CENTER
com 9999, 9921 ou 9531 para que o compute seja iniciado:
{ "custom_tags.COST_CENTER": { "type": "allowlist", "values": ["9999", "9921", "9531"] } }