2017-04-25 8 views
3

spark 어플리케이션 구성에 pureConfig 및 configFactory를 사용하려고합니다. 여기 내 코드입니다 :스파크가 pureconfig로 작동하지 않습니다.

나는 IDE (인 IntelliJ)에서 실행하거나 직접 자바 (즉 자바 항아리 ...)에서 잘 작동
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")) 

.

하지만 그것을 실행할 때 다음과 같은 오류와 함께 실패 스파크 제출

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

을 빠른 검색에서 나는이 question 비슷한 유사한 발견했다. 이것에 대한 이유를 제시 대답

assemblyShadeRules in assembly := Seq(
    ShadeRule.rename("shapeless.**" -> "[email protected]") 
    .inLibrary("com.github.pureconfig" %% "pureconfig" % "0.7.0").inProject 
) 

에서 제안하지만 그것은 작동하지 않았다 나는이 shade it에 노력

, 스파크 및 pureConfig 모두 볼품에 있지만 다른 버전으로 달려 때문이다 뿐만 아니라 다른 이유가있을 수 있습니까? 어떤 아이디어가 효과가 있을까요?

감사

답변

2

는 또한 pureconfig 할뿐만 아니라, 자신의 JAR 내부에 그늘 볼품에 있습니다

assemblyShadeRules in assembly := Seq(
    ShadeRule.rename("shapeless.**" -> "[email protected]") 
    .inLibrary("com.chuusai" % "shapeless_2.11" % "2.3.2") 
    .inLibrary("com.github.pureconfig" %% "pureconfig" % "0.7.0") 
    .inProject 
) 

올바른 볼품없는 버전을 추가해야합니다.

+0

[bug in sbt-assembly] (https://github.com/sbt/sbt-assembly/issues/235)의 버그 목록에서'inLibrary'에 언급 된 라이브러리에'scalaVersion' 접미사를 추가해야합니다. 012.Blusai "%"shapeless_2.11 "%"2.3.2 ") – kaychaks

+0

@kaychaks 나는 실제로 그것에 부딪혀서 잊을 수 있었다. 팁 주셔서 감사합니다, 답변을 업데이 트되었습니다. –

+0

@YuvalItzchakov 나는 spree가 breeze를 통해 형태가없는 2.0.0을 사용한다고 생각한다 (http://apache-spark-developers-list.1001551.n3.nabble.com/shapeless-in-spark-2-1-0-td20392.htm) 수정 프로그램을 실행했을 때 다음 오류가 발생했습니다. java.lang.NoClassDefFoundError : shapeless/DefaultSymbolicLabelling 대신 spark shapeless dependency를 그늘지게해야합니까? –