Получение ошибки: не удалось загрузить org / hl7 / fhir / instance / model / api / IAnyResource при запуске spark-submit

Я пытаюсь выполнить spark-submit в java, в котором также есть некоторые библиотеки HAPI-FHIR, необходимые в проекте. Когда я выполняю задание, я получаю следующую ошибку

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

Я уже включил зависимости FHIR в pom.xml, как показано  Зависимости FHIR

Версия FHIR: R4
Версия HAPI FHIR: 5.4.2
PS: Я запускаю ее на экземпляре ec2


person Why So Serious    schedule 20.07.2021    source источник


Ответы (1)


Импорт зависимости в Maven предоставляет ее в пути к классам во время компиляции, чтобы вы могли скомпилировать свой код. Сам по себе он не упаковывает эти зависимости в ваш код для развертывания. Я не уверен, что все инструменты доступны для Spark или передовой практики, но я предполагаю, что вам нужно упаковать uber (также известный как закрашенный) jar, который содержит ваш скомпилированный код И все зависимости в одном автономном файле jar что вы можете подать искру.

Есть несколько инструментов, которые могут это сделать. Наиболее распространенным, вероятно, является плагин maven shade: https://maven.apache.org/plugins/maven-shade-plugin/

person crig    schedule 20.07.2021
comment
В случае, если это не было на 100% ясным, вы должны добавить конфигурацию плагина тени в раздел сборки POM-файла вашего проекта и пересобрать его с помощью «mvn package». Результирующий jar-файл должен быть больше, что означает, что он работал и упаковал зависимости. - person crig; 21.07.2021
comment
Привет, спасибо за ответ, но проблема все еще сохраняется после добавления плагина тени. - person Why So Serious; 22.07.2021
comment
Я снимаю здесь в темноте - вы можете изучить файл jar, чтобы увидеть, что в нем. Может быть, в манифесте не указан ваш основной класс, поэтому Spark не знает точку входа? Может это поможет? stackoverflow .com / questions / 65169464 / - person crig; 22.07.2021
comment
Мне кажется, что либо Spark не знает точку входа и по какой-то причине пытается загрузить один из классов HAPI в качестве основного. Однако рассматриваемый класс - это просто интерфейс и определенно не содержит метода main (). Это может быть проблема с манифестом jar, в котором не указана точка входа / основная или команда отправки искры. Или в банке отсутствуют зависимости, о чем я подумал впервые, но легко проверить, включены ли в банку зависимости. Для записи, я не думаю, что ваша проблема имеет какое-либо отношение конкретно к FHIR или библиотекам HAPI. - person crig; 22.07.2021