如何使用 Azure DataBricks Api 提交作业?

问题描述

我是 Azure Databricks 的初学者,我想使用 API 在 python 中创建集群和提交作业。我被卡住了,因为我无法这样做。另外,如果我有一个现有的集群,代码会是什么样子?运行此代码后,我获得了作业 ID,但看不到任何输出

import requests

DOMAIN = ''
TOKEN = ''
response = requests.post(
  'https://%s/api/2.0/jobs/create' % (DOMAIN),headers={'Authorization': 'Bearer %s' % TOKEN},json={
       "name": "SparkPi spark-submit job","new_cluster": {
       "spark_version": "7.3.x-scala2.12","node_type_id": "Standard_DS3_v2","num_workers": 2
       },"spark_submit_task": {
       "parameters": [
           "--class","org.apache.spark.examples.SparkPi","dbfs:/FileStore/sparkpi_assembly_0_1.jar","10"
            ]
        }
    }
)
if response.status_code == 200:
  print(response.json())
else:
  print("Error launching cluster: %s: %s" % (response.json()["error_code"],response.json()["message"]))

解决方法

Databricks 的作业可以通过两种方式执行(参见 docs):

  • 在新集群上 - 这就是您现在的做法
  • 在现有集群上 - 删除 new_cluster 块,并使用现有集群的 ID 添加 existing_cluster_id 字段。如果您还没有集群,那么您可以通过 Cluster API
  • 创建它

创建作业时,您会取回可用于编辑或删除作业的作业 ID。您还可以使用 Run Now API 启动作业。但是,如果您只想执行作业而不在 UI 中创建作业,那么您需要查看 Run Submit API。任何一个 API 都会返回特定作业运行的 ID,然后您可以使用 Run Get API 获取作业的状态,或使用 Run Get Output API 获取执行结果。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...