问题描述
我正在尝试在一个 java 中执行 spark-submit,该 java 也有一些项目中需要的 HAPI-FHIR 库。当我执行作业时,出现以下错误
Error: Failed to load package.MainClass: org/hl7/fhir/instance/model/api/IAnyResource
我已经在 pom.xml 中包含了 FHIR 依赖项,如图所示
FHIR 版本:R4
HAPI FHIR 版本为:5.4.2
PS:我在 ec2 实例上运行它
解决方法
在 Maven 中导入依赖项会在编译时类路径中提供它,以便您可以编译代码。它本身不会将这些依赖项与您的部署代码打包在一起。我不确定所有工具都可用于 Spark 或其最佳实践,但我猜您需要打包一个“超级”(又名“阴影”)jar,其中包含您编译的代码和所有依赖项都在一个自我中- 包含的 jar 文件,您可以提交给 spark。
有几种工具可以做到这一点。最常见的可能是maven shade插件:https://maven.apache.org/plugins/maven-shade-plugin/
,正如@crig 提到的,Spark 在其类路径中找不到 jar。
我尝试为所有罐子创建一个胖罐,但不知道为什么无法创建胖罐
但是将罐子添加到 spark-submit --jars hapi-fhir-base-5.4.2
解决了问题