获取错误:无法在运行 spark-submit 时加载 org/hl7/fhir/instance/model/api/IAnyResource

问题描述

我正在尝试在一个 java 中执行 spark-submit,该 java 也有一些项目中需要的 HAPI-FHIR 库。当我执行作业时,出现以下错误

Error: Failed to load package.MainClass: org/hl7/fhir/instance/model/api/IAnyResource

我已经在 pom.xml 中包含了 FHIR 依赖项,如图所示

FHIR dependencies

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 解决了问题

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...