Pular para o conteúdo principal

Obter contexto de tarefa em um UDF

Use o TaskContext PySpark API para obter informações de contexto durante a execução de um lote Unity Catalog Python UDF ou PySpark UDF.

Por exemplo, informações de contexto, como a identidade do usuário e a Cluster Tag, podem verificar a identidade de um usuário para acessar um serviço externo.

Requisitos

Usar TaskContext para obter informações de contexto

Selecione um tab para ver exemplos de TaskContext para PySpark UDFs ou lotes Unity Catalog Python UDFs .

O exemplo de UDF do PySpark a seguir imprime o contexto do usuário:

Python
@udf
def log_context():
import json
from pyspark.taskcontext import TaskContext
tc = TaskContext.get()

# Returns current user executing the UDF
session_user = tc.getLocalProperty("user")

# Returns cluster tags
tags = dict(item.values() for item in json.loads(tc.getLocalProperty("spark.databricks.clusterUsageTags.clusterAllTags ") or "[]"))

# Returns current version details
current_version = {
"dbr_version": tc.getLocalProperty("spark.databricks.clusterUsageTags.sparkVersion"),
"dbsql_version": tc.getLocalProperty("spark.databricks.clusterUsageTags.dbsqlVersion")
}

return {
"user": session_user,
"job_group_id": job_group_id,
"tags": tags,
"current_version": current_version
}

Propriedades do TaskContext

O método TaskContext.getLocalProperty() tem a seguinte chave de propriedade:

Chave de propriedade

Descrição

Exemplo de uso

user

O usuário que está executando o UDF no momento

tc.getLocalProperty("user")

- > "alice"

spark.jobGroup.id

O Spark ID do grupo de trabalho associado ao atual UDF

tc.getLocalProperty("spark.jobGroup.id")

- > "jobGroup-92318"

spark.databricks.clusterUsageTags.clusterAllTags

Agrupamento de tags de metadados como par key-valor formatado como uma representação de strings de um dicionário JSON

tc.getLocalProperty("spark.databricks.clusterUsageTags.clusterAllTags")

- > [{"Department": "Finance"}]

spark.databricks.clusterUsageTags.region

A região onde o workspace reside

tc.getLocalProperty("spark.databricks.clusterUsageTags.region")

- > "us-west-2"

accountId

Databricks account ID do contexto de execução

tc.getLocalProperty("accountId")

- > "1234567890123456"

orgId

ID do espaço de trabalho (não disponível no DBSQL)

tc.getLocalProperty("orgId")

- > "987654321"

spark.databricks.clusterUsageTags.sparkVersion

Databricks Runtime versão para o clustering (em ambientes não-DBSQL)

tc.getLocalProperty("spark.databricks.clusterUsageTags.sparkVersion")

- > "16.3"

spark.databricks.clusterUsageTags.dbsqlVersion

Versão DBSQL (em ambientes DBSQL)

tc.getLocalProperty("spark.databricks.clusterUsageTags.dbsqlVersion")

- > "2024.35"