首页 > 解决方案 > Databricks/Spark 作业执行的 Java 代码 - 一个执行程序的设置

问题描述

在我们当前的系统中,有一个 Java 代码正在读取一个文件,它将全天 - 24 小时生成许多 JSON 文档;所有 JSON 文档都写入 CosmosDB。当我在控制台中执行它时,一切正常。我尝试使用 uber-jar 文件安排 Databricks 作业,但失败并出现以下错误:

"Resource with specified id or name already exists."

看起来没问题... IMO 因为现有集群的默认设置包含许多执行程序 - 所以每个执行程序都会尝试向 CosmosDB 写入相同的 JSON 文档集。所以我改变了主要方法如下:

public static void main(String[] args) {

 SparkConf conf01 = new SparkConf().set("spark.executor.instances","1").set("spark.executor.cores","1");
 SparkSession spark = SparkSession.builder().config(conf01).getOrCreate(); 
 ...
}

但是我从 CosmosDB收到了相同的错误“具有指定 id 或名称的资源已存在” 。我希望这个特定的 Java 代码只有一个执行器,如何只使用一个 spark 执行器?

任何帮助(链接/文档/网址/代码)将不胜感激。谢谢 !

标签: apache-sparkazure-databricks

解决方案


推荐阅读