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

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"

プロパティ キー

説明

使用例

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"