无法为 Databricks 作业构建具有多个主类的 Spark 应用程序

Posted

技术标签:

【中文标题】无法为 Databricks 作业构建具有多个主类的 Spark 应用程序【英文标题】:Unable to build Spark application with multiple main classes for Databricks job 【发布时间】:2022-01-15 17:26:53 【问题描述】:

我有一个 spark 应用程序,其中包含要在 Azure 数据块上运行的多个 spark 作业。我想构建应用程序并将其打包到一个胖罐中。该应用程序能够成功编译。当我尝试打包(命令:sbt 包)应用程序时,它给出了一个错误 "[warn] multiple main classes detected: run 'show foundMainClasses' to see the list"。

如何构建应用程序 jar(不指定任何主类)以便我可以将其上传到 Databricks 作业并在那里指定主类路径?

【问题讨论】:

试试这个参数并给出你想运行的主类路径:--className=main class path 【参考方案1】:

此消息只是一个警告(请参阅其中的[warn]),它不会阻止生成 jar 文件(正常或胖)。然后,您可以将生成的 jar 上传到 DBFS(或更新的 Databricks Runtime 版本的 ADLS),并创建 Databricks job 作为 Jar 任务或 Spark 提交任务。

如果 sbt 失败,并且不生成 jars,那么您有一些插件会在警告中强制出错。

还要注意sbt package 不会生成胖 jar - 它只会为您项目中的类生成 jar。您将需要使用sbt assembly(为此安装sbt-assembly plugin)来生成fat jar,但请确保将Spark 和Delta 依赖项标记为provided

【讨论】:

以上是关于无法为 Databricks 作业构建具有多个主类的 Spark 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

春季启动批处理到具有多个作业的春季云任务

具有多个模块和多个主类的spring boot项目-单元测试失败

Databricks - 从增量表写入流到 orc 文件的读取流仅具有更改

Azure databricks - 无法使用来自 datalake 存储 gen2 服务的 spark 作业读取 .csv 文件

具有多个部署的单个 Jenkins 作业

Xcode 构建失败:无法找到或加载主类