メインコンテンツまでスキップ

UDF でタスク コンテキストを取得する

TaskContext PySpark API を使用して、バッチ Unity Catalog Python UDF または PySpark UDFの実行中にコンテキスト情報を取得します。

たとえば、ユーザーの ID やクラスタータグなどのコンテキスト情報を使用すると、外部サービスにアクセスするためにユーザーの ID を検証できます。

必要条件

TaskContext を使用してコンテキスト情報を取得する

タブを選択すると、 PySpark UDF または バッチ Unity Catalog Python UDF の TaskContext の例が表示されます。

次の PySpark UDF の例では、ユーザーのコンテキストを出力します。

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
}

TaskContext プロパティ

TaskContext.getLocalProperty() メソッドには、次のプロパティ キーがあります。

プロパティ キー

説明

使用例

user

現在 UDF を実行しているユーザー

tc.getLocalProperty("user")

-> "alice"

spark.jobGroup.id

現在の UDF に関連付けられている Spark ジョブ グループ ID

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

-> "jobGroup-92318"

spark.databricks.clusterUsageTags.clusterAllTags

JSONディクショナリの文字列表現として書式設定されたキーと値のペアとしてのメタデータタグのクラスタリング

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

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

spark.databricks.clusterUsageTags.region

ワークスペースが存在する地域

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

-> "us-west-2"

accountId

実行中のコンテキストの Databricks アカウント ID

tc.getLocalProperty("accountId")

-> "1234567890123456"

orgId

ワークスペース ID (DBSQL では使用できません)

tc.getLocalProperty("orgId")

-> "987654321"

spark.databricks.clusterUsageTags.sparkVersion

クラスタリングの Databricks Runtime バージョン (DBSQL 以外の環境)

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

-> "16.3"

spark.databricks.clusterUsageTags.dbsqlVersion

DBSQL バージョン (DBSQL 環境上)

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

-> "2024.35"