Referência de política de computação
Este artigo é uma referência para definições de política de computação. Os artigos incluem uma referência dos atributos de política disponíveis e tipos de limitação. Há também políticas de exemplo que você pode referenciar para casos de uso comuns.
O que são definições de política?
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 a API de Clusters . Por exemplo, essas definições estabelecem um tempo padrão de autoterminação, proíbem os usuários de usar pools e impõem o uso do 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 de API. Em atributos aninhados, o caminho concatena os nomes de atributo aninhados usando pontos. Atributos que não estão definidos em uma definição de política não serão limitados.
atributos suportados
As políticas dão suporte a todos os atributos controlados com a API de Clusters . O tipo de restrições que você pode colocar em atributos pode variar por configuração com base em seu tipo e relação com os elementos da interface do usuário. Você não pode usar políticas para definir permissões de computação.
Você também pode usar políticas para definir o máximo de DBUs por hora e o tipo de cluster. Veja Caminhos de atributo virtual.
A tabela a seguir lista os caminhos de atributo de política com suporte:
Caminho de atributo | Tipo | Descrição |
---|---|---|
autoscale.max_workers |
número opcional | Quando oculto, remove o campo de número máximo de trabalhadores da interface do usuário. |
autoscale.min_workers |
número opcional | Quando oculto, remove o campo número mínimo de trabalho da interface do usuário. |
autotermination_minutes |
número | Um valor de 0 não 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. |
azure_attributes.availability |
cadeia de caracteres | Controla os usos da computação sob demanda ou as instâncias spot (ON_DEMAND_AZURE ou SPOT_WITH_FALLBACK_AZURE ). |
azure_attributes.first_on_demand |
número | Controla o número de nós a serem colocados nas instâncias sob demanda. |
azure_attributes.spot_bid_max_price |
número | Controla o preço máximo das instâncias spot do Azure. |
cluster_log_conf.path |
cadeia de caracteres | A URL de destino dos arquivos de log. |
cluster_log_conf.type |
cadeia de caracteres | O tipo de destino de log. DBFS e VOLUMES são os únicos valores aceitáveis. |
cluster_name |
cadeia de caracteres | O nome do cluster. |
custom_tags.* |
cadeia de caracteres | Controlar valores de etiqueta específicos acrescentando o nome da etiqueta, por exemplo: custom_tags.<mytag> . |
data_security_mode |
cadeia de caracteres | Define o modo de acesso do cluster. O Catálogo do Unity exige SINGLE_USER ou USER_ISOLATION (modo de acesso Standard compartilhado na interface do usuário). Um valor de NONE significa que nenhum recurso de segurança está habilitado. |
docker_image.basic_auth.password |
cadeia de caracteres | A senha para a autenticação básica da imagem dos Serviços de Contêiner do Databricks. |
docker_image.basic_auth.username |
cadeia de caracteres | O nome de usuário para a autenticação básica da imagem dos Serviços de Contêiner do Databricks. |
docker_image.url |
cadeia de caracteres | Controla a URL da imagem dos Serviços de Contêiner do Databricks. Quando oculta, remove a seção Serviços de Contêiner do Databricks da interface do usuário. |
driver_node_type_id |
cadeia de caracteres opcional | Quando oculto, remove a seleção de tipo de nó de driver da interface do usuário. |
enable_local_disk_encryption |
booleano | Defina como true para habilitar ou false desabilitar, criptografando discos que estão conectados localmente ao cluster (conforme especificado por meio da API). |
init_scripts.*.workspace.destination init_scripts.*.volumes.destination init_scripts.*.abfss.destination init_scripts.*.file.destination |
cadeia de caracteres | * refere-se ao índice do script de inicialização na matriz de atributos. Consulte Políticas de gravação para atributos de matriz. |
instance_pool_id |
cadeia de caracteres | Controla o pool usado pelos nós de trabalho se driver_instance_pool_id também está definido, caso contrário, para todos os nós de cluster. Se você usar pools para nós de trabalho, também precisará usar pools para o nó do driver. Quando oculto, remove a seleção do pool da interface do usuário. |
driver_instance_pool_id |
cadeia de caracteres | Se especificado, configura um pool para o nó do driver diferente dos nós de trabalho. Se não for especificado, herdará instance_pool_id . Se você usar pools para nós de trabalho, também precisará usar pools para o nó do driver. Quando oculto, remove a seleção do pool de driver da interface do usuário. |
node_type_id |
cadeia de caracteres | Quando oculto, remove a seleção do tipo de nó de trabalho da interface do usuário. |
num_workers |
número opcional | Quando oculto, remove a especificação de número de trabalho da interface do usuário. |
runtime_engine |
cadeia de caracteres | Determina se o cluster usa o Photon ou não. Os possíveis valores são PHOTON ou STANDARD . |
single_user_name |
cadeia de caracteres | Controla quais usuários ou grupos podem ser atribuídos ao recurso de computação. |
spark_conf.* |
cadeia de caracteres opcional | Controla valores de configuração específicos acrescentando o nome da chave de configuração, por exemplo: spark_conf.spark.executor.memory . |
spark_env_vars.* |
cadeia de caracteres opcional | Controla valores específicos de variáveis de ambiente do Spark acrescentando a variável de ambiente, por exemplo: spark_env_vars.<environment variable name> . |
spark_version |
cadeia de caracteres | O nome da versão da imagem do Spark conforme especificado por meio da API (o Databricks Runtime). Você também pode usar valores de política especiais que selecionam dinamicamente o Databricks Runtime. Consulte Valores de política especiais para seleção do Databricks Runtime. |
workload_type.clients.jobs |
booleano | Define se o recurso de computação pode ser usado para trabalhos. Consulte Impedir que a computação seja usada com trabalhos. |
workload_type.clients.notebooks |
booleano | Define se o recurso de computação pode ser usado com notebooks. Consulte Impedir que a computação seja usada com trabalhos. |
Caminhos de atributo virtual
Esta tabela inclui dois atributos sintéticos adicionais compatíveis com políticas:
Caminho de atributo | Tipo | Descrição |
---|---|---|
dbus_per_hour |
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 maneira direta de controlar o custo no nível de computação individual. Use com limitação de intervalo. |
cluster_type |
string | Representa o tipo de cluster que pode ser criado:
Permitir ou bloquear os tipos de computação especificados a serem criados a partir da política. Se o valor all-purpose não for permitido, a política não será mostrada na interface do usuário do criação de computação para todas as finalidades. Se o valor job não for permitido, a política não será mostrada na interface do usuário de computação do trabalho de criação. |
Valores de política especiais para seleção do Databricks Runtime
O atributo spark_version
dá suporte a valores especiais que são mapeados dinamicamente para uma versão do Databricks Runtime com base no conjunto atual de versões do Databricks Runtime com suporte.
Os seguintes valores podem ser usados no atributo spark_version
:
auto:latest
: mapeia para a versão mais recente em disponibilidade geral do Databricks Runtime.auto:latest-ml
: mapeia para a versão mais recente de ML do Databricks Runtime.auto:latest-lts
: mapeia para a versão mais recente do Databricks Runtime de suporte de longo prazo (LTS).auto:latest-lts-ml
: mapeia para a versão mais recente de ML do Databricks Runtime de LTS.auto:prev-major
: mapeia para a segunda versão mais recente do GA do 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 de ML do Databricks Runtime. 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 Databricks Runtime de LTS. 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 de ML do Databricks Runtime de LTS. Por exemplo, seauto:latest-lts
for 13.3,auto:prev-lts
será 12.2.
Observação
Usar esses valores não faz com que a computação seja atualizada automaticamente quando uma nova versão de runtime é lançada. Um usuário deve editar explicitamente a computação para que a versão do Databricks Runtime seja alterada.
Tipos de política com suporte
Esta seção inclui uma referência para cada um dos tipos de política disponíveis. Há duas categorias de tipos de política: políticas fixas e políticas de limitação.
As políticas fixas impedem a configuração do usuário em um atributo. Os dois tipos de políticas fixas são:
A limitação de políticas limita as opções de um usuário para configurar um atributo. A limitação de políticas também permite que você defina valores padrão e torne os atributos opcionais. Veja Campos de política de limitação adicionais.
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 de 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 que não sejam numéricos e boolianos, 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 do usuário definindo o campo hidden
como true
.
interface FixedPolicy {
type: "fixed";
value: string | number | boolean;
hidden?: boolean;
}
Esta política de exemplo corrige a versão do Databricks Runtime e oculta o campo da interface 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 apenas com atributos opcionais.
interface ForbiddenPolicy {
type: "forbidden";
}
Essa política proíbe a anexação de pools à computação para nós de trabalho. Os pools também são proibidos no nó de driver, pois driver_instance_pool_id
herda a política.
{
"instance_pool_id": { "type": "forbidden" }
}
Política da lista de permitidos
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;
}
Este exemplo de lista de permissões 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 da lista de bloqueados
A política de lista de bloqueio lista valores não permitidos. Como os valores devem ser correspondências exatas, essa política pode não funcionar como esperado quando o atributo é flexível em 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 o Databricks Runtime.
{
"spark_version": { "type": "blocklist", "values": ["7.3.x-scala2.12"] }
}
Política de regex
Uma política regex limita os valores disponíveis aos que correspondem ao regex. Por segurança, verifique se o regex está ancorado no início e no final do valor da cadeia 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 intervalo
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 necessários ou para definir o valor padrão na interface do usuário.
interface UnlimitedPolicy {
type: "unlimited";
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
Este exemplo adiciona a marca COST_BUCKET
à computação:
{
"custom_tags.COST_BUCKET": { "type": "unlimited" }
}
Para definir um valor padrão para uma variável de configuração do Spark, mas também permitir omitir (remover) ela:
{
"spark_conf.spark.my.conf": { "type": "unlimited", "isOptional": true, "defaultValue": "my_value" }
}
Campos de política de limitação adicionais
Para limitar os tipos de política, você pode especificar dois campos adicionais:
defaultValue
– O valor que é preenchido automaticamente na interface do usuário de criação de computação.isOptional
- Uma política de limitação em um atributo torna-a automaticamente necessária. Para tornar o atributo opcional, defina o campoisOptional
comotrue
.
Observação
Os valores padrão não são aplicados automaticamente à computação criada com a API de Clusters . Para aplicar valores padrão usando a API, adicione o parâmetro apply_policy_default_values
à definição de computação e defina-o como true
.
Esta política de exemplo especifica o valor padrão id1
para o pool de nós de trabalho, mas o torna opcional. Ao criar a computação, você pode selecionar um pool diferente ou optar por não usar um. Se driver_instance_pool_id
não estiver definido na política ou quando a computação for criada, o mesmo pool será usado para nós de trabalho e para o nó de driver.
{
"instance_pool_id": { "type": "unlimited", "isOptional": true, "defaultValue": "id1" }
}
Políticas de gravação para atributos de matriz
Você pode especificar políticas para atributos de matriz de duas maneiras:
- Limitações genéricas para todos os elementos de 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 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 de matriz que não tem uma limitação específica. Em cada caso, apenas uma limitação de política será aplicada.
As seções a seguir mostram exemplos de exemplos comuns que usam atributos de matriz.
Exigir entradas específicas da inclusão
Você não pode exigir valores específicos sem especificar a ordem. 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"
}
}
Não permitir absolutamente o uso
{
"init_scripts.*.volumes.destination": {
"type": "forbidden"
}
}
Permitir entradas que seguem restrição específica
{
"init_scripts.*.volumes.destination": {
"type": "regex",
"pattern": ".*<required-content>.*"
}
}
Corrigir um conjunto específico de scripts de inicialização
No caso de caminhos init_scripts
, a matriz pode conter uma entre várias estruturas para as quais lidar com todas as variantes possíveis pode ser necessário, dependendo do caso de uso. Por exemplo, para exigir um conjunto específico de scripts de inicialização e não permitir qualquer variante da outra versão, você 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.*.abfss.destination": {
"type": "forbidden"
},
"init_scripts.*.file.destination": {
"type": "forbidden"
}
}
Exemplos de política
Esta seção inclui exemplos de política que você pode usar como referências para criar suas próprias políticas. Você também pode usar as famílias de políticas fornecidas pelo Azure Databricks como modelos para casos comuns de uso de políticas.
- política de computação geral
- Definir limites na computação de pipeline do DLT
- Política simples de médio porte
- Política somente de trabalho
- Política de metastore externo
- Impedir que a computação seja usada com trabalhos
- Remover política de dimensionamento automático
- Imposição de marca personalizada
Política de computação geral
Uma política de computação de uso geral destinada a orientar os usuários e restringir algumas funcionalidades, além de exigir etiquetas, limitar o número máximo de instâncias e impor um tempo limite.
{
"instance_pool_id": {
"type": "forbidden",
"hidden": true
},
"spark_version": {
"type": "regex",
"pattern": "12\\.[0-9]+\\.x-scala.*"
},
"node_type_id": {
"type": "allowlist",
"values": ["Standard_L4s", "Standard_L8s", "Standard_L16s"],
"defaultValue": "Standard_L16s_v2"
},
"driver_node_type_id": {
"type": "fixed",
"value": "Standard_L16s_v2",
"hidden": true
},
"autoscale.min_workers": {
"type": "fixed",
"value": 1,
"hidden": true
},
"autoscale.max_workers": {
"type": "range",
"maxValue": 25,
"defaultValue": 5
},
"autotermination_minutes": {
"type": "fixed",
"value": 30,
"hidden": true
},
"custom_tags.team": {
"type": "fixed",
"value": "product"
}
}
Definir limites na computação de pipeline DLT
Observação
Ao usar políticas para configurar a computação DLT, o Databricks recomenda aplicar uma única política à computação default
e maintenance
.
Para configurar uma política para uma computação de pipeline, crie uma política com o campo cluster_type
definido como dlt
. O exemplo a seguir cria uma política mínima para uma computação DLT:
{
"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 uma computação de médio porte com configuração mínima. O único campo necessário no momento da criação é o nome da computação; o restante está 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": "Standard_L8s_v2",
"hidden": true
},
"driver_node_type_id": {
"type": "fixed",
"value": "Standard_L8s_v2",
"hidden": true
},
"spark_version": {
"type": "fixed",
"value": "auto:latest-ml",
"hidden": true
},
"custom_tags.team": {
"type": "fixed",
"value": "product"
}
}
Política somente de trabalho
Permite que os usuários criem computação de trabalho para executar trabalhos. Os usuários não podem criar computação de propósito geral 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": "Standard_[DLS]*[1-6]{1,2}_v[2,3]"
},
"driver_node_type_id": {
"type": "regex",
"pattern": "Standard_[DLS]*[1-6]{1,2}_v[2,3]"
},
"spark_version": {
"type": "unlimited",
"defaultValue": "auto:latest-lts"
},
"custom_tags.team": {
"type": "fixed",
"value": "product"
}
}
Política de metastore externo
Permite que os usuários criem uma computação com um metastore definido pelo administrador já anexado. Isso é útil para permitir que os usuários criem sua própria computação sem a necessidade de 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 a computação seja usada com trabalhos
Essa política impede que os usuários usem a computação para executar trabalhos. Os usuários só poderão usar a computação com notebooks.
{
"workload_type.clients.notebooks": {
"type": "fixed",
"value": true
},
"workload_type.clients.jobs": {
"type": "fixed",
"value": false
}
}
Remover política de dimensionamento automático
Essa política desabilita o dimensionamento automático e permite que o usuário defina o número de trabalhos dentro de um determinado intervalo.
{
"num_workers": {
"type": "range",
"maxValue": 25,
"minValue": 1,
"defaultValue": 5
}
}
Imposição de marca personalizada
Para adicionar uma regra de tag de computação a uma política, use o atributo custom_tags.<tag-name>
.
Por exemplo, qualquer usuário que use essa política precisa preencher uma marca de COST_CENTER
com 9999, 9921 ou 9531 para que a computação seja iniciada:
{ "custom_tags.COST_CENTER": { "type": "allowlist", "values": ["9999", "9921", "9531"] } }