使用命令行数据块提交具有不同参数的作业

Submitting jobs with different parameters using command line databricks

我有 jar 和相关的属性文件。为了 运行 罐子,这是我在 Azure 上的 Databricks 上所做的:

我点击:

  +Create Job

      Task: com.xxx.sparkmex.core.ModelExecution in my.jar - Edit / Upload JAR / Remove
      Parameters: Edit
        Main Class: com.xxx.sparkmex.core.ModelExecution
        Arguments: ["-file","/dbfs/mnt/mypath/myPropertyFile.properties","-distributed"]

      Cluster: MyCluster 

然后我点击RunNow

我正在尝试使用 databricks cli 实现相同的目标

这就是我doing/want要做的事情:

1) 上传属性文件

dbfs cp myPropertyFile.properties dbfs:/mnt/mypath/myPropertyFile.properties 

2) 创建一个作业:databricks jobs create 当我这样做时,它要求一个 --jason-file。我从哪里得到 jason 文件?

3)上传jar文件:如何上传jar文件?

4) 上传属性 文件:如何上传属性文件?

5) 重启集群:databricks clusters restart --cluster-id MYCLUSTERID

6) 运行 工作

并重复。我想重复的原因是每次我上传一个具有不同设置的新属性文件时。 我不知道如何进行第 2 步到第 4 步和第 5 步。

对于第二步,您需要自己创建 JSON 文件。将此视为您的集群配置。 Here's an example 使用 JAR 文件创建作业:

{
      "name": "SparkPi JAR job",
      "new_cluster": {
        "spark_version": "5.2.x-scala2.11",
        "node_type_id": "r3.xlarge",
        "aws_attributes": {"availability": "ON_DEMAND"},
        "num_workers": 2
        },
     "libraries": [{"jar": "dbfs:/docs/sparkpi.jar"}],
     "spark_jar_task": {
        "main_class_name":"org.apache.spark.examples.SparkPi",
        "parameters": "10"
        }
}

将其另存为 JSON 文件并将其包含在您的 API 请求中。您还可以直接在 curl 命令中包含 JSON。有关示例,请参见上面的 link。您可能希望将 myPropertyFile.properties 作为值传递给 JSON.

中的 "parameters"

您可以按照执行步骤 1 - the DBFS command group Databricks CLI 的相同方式上传 JAR 和属性文件。

databricks fs cp /path_to_local_file/myJar.jar dbfs:/path_to_file_on_dbfs/

创建作业并获得作业 ID 后,您可以使用 run-now API 启动它。

如果您想自动执行此过程并使其可重复,您可以编写一个 bash 脚本,该脚本接受参数并调用 CLI。或者,您可以使用 wrappers for the CLI in Python 或编写 Python 脚本来自己管理 REST API 调用。