Spark Submit タスクの廃止通知と移行ガイド
Spark Submit タスクは非推奨であり、削除が保留中です。このタスク タイプの使用は、新しいユース ケースでは許可されておらず、既存の顧客に対しては強く推奨されません。このタスク タイプの元のドキュメントについては、「Spark Submit (レガシー)」を参照してください。移行手順については、読み続けてください。
Spark Submit が廃止されるのはなぜですか?
Spark Submit タスク タイプは、技術的な制限と、 JAR 、ノートブック、またはPythonスクリプトタスクにはない機能ギャップのため、非推奨になります。 これらのタスクにより、Databricks 機能との統合が向上し、パフォーマンスと信頼性が向上します。
廃止措置
Databricks は廃止に関連して以下の対策を実施しています。
- 作成の制限 : 2025 年 11 月以降、前月に Spark Submit タスクを使用したユーザーのみが新しい Spark Submit タスクを作成できます。例外が必要な場合は、アカウント サポートにお問い合わせください。
- API 非推奨通知 : Spark Submit タスクを作成または編集しようとする API リクエストは、非推奨通知を提供するためにランダムに拒否される場合があります。成功するまで同じ問題でリクエストを再試行します。
- DBR バージョンの制限 : Spark Submit の 使用は、既存の DBR バージョンとメンテナンス リリースに制限されます。 Spark Submit を 備えた既存の DBR バージョンでは、機能が完全にシャットダウンされるまで、セキュリティおよびバグ修正のメンテナンス リリースが引き続き提供されます。DBR 17.3+ および 18.x+ ではこのタスク タイプはサポートされません。
- UI 警告 : Spark Submit タスクが使用されている Databricks UI 全体に警告が表示され、既存のユーザーのアカウントのワークスペース管理者に通信が送信されます。
JVM ワークロードを JAR タスクに移行する
JVM ワークロードの場合、 Spark Submit タスクを JAR タスクに移行します。JAR タスクは、より優れた機能サポートと Databricks との統合を提供します。
移行するには、次のステップに従ってください。
- ジョブに新しい JAR タスクを作成します。
- Spark Submit タスクの問題から、最初の 3 つの引数を特定します。 一般的には次のパターンに従います。
["--class", "org.apache.spark.mainClassName", "dbfs:/path/to/jar_file.jar"] --class問題を削除します。- メインクラス名 (たとえば、
org.apache.spark.mainClassName) を JAR タスクの メインクラス として設定します。 - JAR タスク構成で JAR ファイルへのパス (例:
dbfs:/path/to/jar_file.jar) を指定します。 - Spark Submit タスクの残りの引数を JAR タスク パラメーターにコピーします。
- JAR タスクを実行し、期待どおりに動作することを確認します。
JARタスクの構成の詳細については、 JARタスク」を参照してください。
Rワークロードの移行
Spark Submit タスクから R スクリプトを直接起動する場合は、複数の移行パスが利用できます。
オプションA: ノートブックタスクを使用する
R スクリプトを Databricks ノートブックに移行します。ノートブックタスクは、クラスターオートスケールを含む完全な機能セットをサポートし、 Databricksプラットフォームとの統合を強化します。
オプションB: ノートブックタスクからRスクリプトをブートストラップする
ノートブックタスクを使用して R スクリプトをブートストラップします。次のコードでノートブックを作成し、R ファイルをジョブ問題として参照します。 必要に応じて、R スクリプトで使用される問題を追加するように変更します。
dbutils.widgets.text("script_path", "", "Path to script")
script_path <- dbutils.widgets.get("script_path")
source(script_path)
Spark Submit タスクを使用するジョブを検索する
次の Python スクリプトを使用すると、ワークスペース内で表示可能な Spark Submit タスクを含むすべてのジョブを識別できます。これにより、影響を受けるジョブをインベントリし、移行を計画するのに役立ちます。有効な個人アクセス トークンまたはその他のトークンが必要となり、ワークスペース URLを使用する必要があります。
#!/usr/bin/env python3
"""
Requirements:
databricks-sdk>=0.20.0
Usage:
export DATABRICKS_HOST="https://your-workspace.cloud.databricks.com"
export DATABRICKS_TOKEN="your-token"
python list_spark_submit_jobs.py
Output:
CSV format with columns: Job ID, Owner ID/Email, Job Name
Incorrect:
export DATABRICKS_HOST="https://your-workspace.cloud.databricks.com/?o=12345678910"
"""
import csv
import os
import sys
from databricks.sdk import WorkspaceClient
def main():
# Get credentials from environment
workspace_url = os.environ.get("DATABRICKS_HOST")
token = os.environ.get("DATABRICKS_TOKEN")
if not workspace_url or not token:
print("Error: Set DATABRICKS_HOST and DATABRICKS_TOKEN environment variables", file=sys.stderr)
sys.exit(1)
# Initialize client
client = WorkspaceClient(host=workspace_url, token=token)
# Scan workspace for jobs with Spark Submit tasks
print("Scanning workspace for jobs with Spark Submit tasks... (this will take a while)", file=sys.stderr)
jobs_with_spark_submit = []
total_jobs = 0
for job in client.jobs.list(expand_tasks=True):
total_jobs += 1
# Check if job has any Spark Submit tasks
if job.settings and job.settings.tasks:
has_spark_submit = any(
task.spark_submit_task is not None
for task in job.settings.tasks
)
if has_spark_submit:
job_name = job.settings.name or f"Unnamed Job {job.job_id}"
owner_email = job.creator_user_name or "Unknown"
jobs_with_spark_submit.append({
'job_id': job.job_id,
'owner_email': owner_email,
'job_name': job_name
})
# Print summary to stderr
print(f"Scanned {total_jobs} jobs total", file=sys.stderr)
print(f"Found {len(jobs_with_spark_submit)} jobs with Spark Submit tasks", file=sys.stderr)
print("", file=sys.stderr)
# Output CSV to stdout
if jobs_with_spark_submit:
writer = csv.DictWriter(
sys.stdout,
fieldnames=['job_id', 'owner_email', 'job_name'],
quoting=csv.QUOTE_MINIMAL
)
writer.writeheader()
writer.writerows(jobs_with_spark_submit)
else:
print("No jobs with Spark Submit tasks found.", file=sys.stderr)
if __name__ == "__main__":
main()
ヘルプが必要ですか?
さらにサポートが必要な場合は、アカウント サポートにお問い合わせください。