вот что я сделал:

аюсь использовать pureConfig и configFactory для конфигурации своего приложения spark. вот мой код:

import pureconfig.{loadConfigOrThrow}
object Source{
  def apply(keyName: String, configArguments: Config): Source = {
    keyName.toLowerCase match {
      case "mysql" =>
          val properties = loadConfigOrThrow[DBConnectionProperties](configArguments)
          new MysqlSource(None, properties)
      case "files" =>
        val properties = loadConfigOrThrow[FilesSourceProperties](configArguments)
        new Files(properties)
      case _ => throw new NoSuchElementException(s"Unknown Source ${keyName.toLowerCase}")
    }

  }
}

import Source
val config = ConfigFactory.parseString(result.mkString("\n"))
    val source = Source("mysql",config.getConfig("source.mysql"))

когда я запускаю его из IDE (intelliJ) или напрямую из java (т.е. java jar ...), он работает нормально.

Но когда я запускаю его с помощью spark-submit, происходит сбой со следующей ошибкой:

Exception in thread "main" java.lang.NoSuchMethodError: shapeless.Witness$.mkWitness(Ljava/lang/Object;)Lshapeless/Witness;

Из быстрого поиска я нашел похожее на этовопрос, которые предполагают, что причина этого в том, что и spark, и pureConfig зависят от Shapeless, но с разными версиями,

Я пыталсязатени это как предложено в ответе

assemblyShadeRules in assembly := Seq(
  ShadeRule.rename("shapeless.**" -> "shadeshapless.@1")
    .inLibrary("com.github.pureconfig" %% "pureconfig" % "0.7.0").inProject
)

но это не сработало, может ли это быть по другой причине? Есть идеи, что может работать?

Спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос