无法为 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 文件