Я пытаюсь запустить толстую банку через spark-submit
на EMR. Я столкнулся с проблемой, связанной с зависимостями пакетов. Этот проект зависит от библиотеки google adwords
, которую я включил в build.sbt
. Проблема в том, что библиотека google adwords
внутренне зависит от пакета с именем commons-configuration
версии 1.10, но когда я запускаю этот jar на EMR через spark-submit
, который запускается через yarn scheduler
, используется версия 1.6 этого пакета (commons-configuration
) поскольку он является частью CLASSPATH в кластере EMR. Я получаю следующую ошибку
java.lang.NoSuchMethodError: org.apache.commons.configuration.MapConfiguration
Я попытался передать jar зависимостей явно, используя параметр --jars
из spark-submit
spark-submit --name my-awesome-spark-job --deploy-mode cluster --class package.path.to.my.Main --jars s3://jar-bucket/jars/commons-configuration-1.10.jar s3://code-bucket/jars/spark-code.jar
Это все равно дает мне ту же ошибку, что и пакет более старой версии от CLASSPATH, несмотря ни на что.
Я хотел бы заставить свой jar включать зависимость внутри fat jar и явно использовать их для определенных библиотек, например, здесь есть библиотека google adwords
. Благодаря.