[SCALA] 아파치 스파크의 의존성 문제를 해결
SCALA아파치 스파크의 의존성 문제를 해결
일반적인 문제를 구축하고 스파크 응용 프로그램을 배포 있습니다 :
다음은 어떻게 해결 될 수 있는가?
해결법
-
==============================
1.아파치 스파크의 클래스 경로는 (응용 프로그램 별 사용자 코드를 수용하기 위해) 이러한 문제에 취약하게하는 동적으로 내장되어 있습니다. @ user7337271의 대답은 정확하지만, 당신이 사용하고있는 클러스터 관리자 ( "마스터")에 따라 좀 더 관심이있다.
아파치 스파크의 클래스 경로는 (응용 프로그램 별 사용자 코드를 수용하기 위해) 이러한 문제에 취약하게하는 동적으로 내장되어 있습니다. @ user7337271의 대답은 정확하지만, 당신이 사용하고있는 클러스터 관리자 ( "마스터")에 따라 좀 더 관심이있다.
먼저, 점화 애플리케이션은 이들 구성 요소 (각각은 별도의 JVM 그러므로 잠재적 클래스 경로에서 다른 클래스를 포함)로 구성
이들의 관계는 아파치 스파크 클러스터 모드 개요에서 본도에서 설명된다 :
- 지금 어떤 클래스 각 구성 요소에 상주해야합니까?
이것은 다음과 같은 그림으로 답변을 얻을 수 있습니다 :
의가 천천히 구문 분석 보자 :
이제 우리는 바로, 우리가 어떻게 클래스는 각 구성 요소에 올바르게로드합니까, 그들이 어떤 규칙을 준수해야 함을 가지고 있다고?
여기에 구축하고 (이 경우 - YARN을 사용하여) 스파크 응용 프로그램을 배포하는 제안 된 접근 방식이다, 요약하면 :
-
==============================
2.구축하고 스파크 응용 프로그램을 배포 할 때 모든 종속성 호환 버전이 필요합니다.
구축하고 스파크 응용 프로그램을 배포 할 때 모든 종속성 호환 버전이 필요합니다.
-
==============================
3.문제가 외부 종속성 누락으로 인한 경우 이미 user7337271에 의해 주어진 매우 광범위한 대답 이외에, 당신은 예를 들어, 귀하의 종속성이있는 항아리를 구축 할 수 있습니다 받는다는 조립 플러그인
문제가 외부 종속성 누락으로 인한 경우 이미 user7337271에 의해 주어진 매우 광범위한 대답 이외에, 당신은 예를 들어, 귀하의 종속성이있는 항아리를 구축 할 수 있습니다 받는다는 조립 플러그인
이미 언급 한 바와 같이이 경우, 그들은 당신의 런타임 스파크 버전과 상관 관계 확인, 빌드 시스템에 "제공"모든 핵심 스파크 종속성을 표시 할 수 있는지 확인합니다.
-
==============================
4.응용 프로그램의 종속성 클래스는 여러분의 실행 명령의 응용 프로그램 항아리 옵션에 지정되어야합니다.
응용 프로그램의 종속성 클래스는 여러분의 실행 명령의 응용 프로그램 항아리 옵션에 지정되어야합니다.
자세한 내용은 스파크 문서에서 찾을 수 있습니다
문서에서 발췌 :
-
==============================
5.나는이 문제가 조립 플러그인을 해결해야한다 생각합니다. 당신은 지방 항아리를 구축해야합니다. SBT의 예를 들면 :
나는이 문제가 조립 플러그인을 해결해야한다 생각합니다. 당신은 지방 항아리를 구축해야합니다. SBT의 예를 들면 :
자세한 정보가 필요하면, https://github.com/sbt/sbt-assembly로 이동
-
==============================
6.프로젝트 스파크 2.4.0 - 빈 - hadoop2.7 \ 스파크-2.4.0 - 빈 - hadoop2.7의 \ 단지에서 모든 jar 파일을 추가합니다. 스파크 - 2.4.0 - 빈 - hadoop2.7은 https://spark.apache.org/downloads.html에서 다운로드 할 수 있습니다
프로젝트 스파크 2.4.0 - 빈 - hadoop2.7 \ 스파크-2.4.0 - 빈 - hadoop2.7의 \ 단지에서 모든 jar 파일을 추가합니다. 스파크 - 2.4.0 - 빈 - hadoop2.7은 https://spark.apache.org/downloads.html에서 다운로드 할 수 있습니다
-
==============================
7.나는 다음과 같은 build.sbt이
나는 다음과 같은 build.sbt이
lazy val root = (project in file(".")). settings( name := "spark-samples", version := "1.0", scalaVersion := "2.11.12", mainClass in Compile := Some("StreamingExample") ) libraryDependencies ++= Seq( "org.apache.spark" %% "spark-core" % "2.4.0", "org.apache.spark" %% "spark-streaming" % "2.4.0", "org.apache.spark" %% "spark-sql" % "2.4.0", "com.couchbase.client" %% "spark-connector" % "2.2.0" ) // META-INF discarding assemblyMergeStrategy in assembly := { case PathList("META-INF", xs @ _*) => MergeStrategy.discard case x => MergeStrategy.first }
나는 SBT 어셈블리 플러그인을 사용하여 내 응용 프로그램의 지방 항아리를 만들었지 만 사용하여 실행할 때 오류와 함께 실패 불꽃을 제출했습니다 :
java.lang.NoClassDefFoundError: rx/Completable$OnSubscribe at com.couchbase.spark.connection.CouchbaseConnection.streamClient(CouchbaseConnection.scala:154)
클래스 내 지방 항아리에 있는지 난 볼 수 있습니다 :
jar tf target/scala-2.11/spark-samples-assembly-1.0.jar | grep 'Completable$OnSubscribe' rx/Completable$OnSubscribe.class
확실하지 무슨 일이 내가 여기에 단서를 놓친 거지?
from https://stackoverflow.com/questions/41383460/resolving-dependency-problems-in-apache-spark by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 어디 스칼라 implicits 찾아합니까? (0) | 2019.10.28 |
---|---|
[SCALA] 어떻게 스칼라의 타입 삭제 주위를받을 수 있나요? 또는, 왜 나는 내 컬렉션의 형식 매개 변수를 얻을 수 없다? (0) | 2019.10.28 |
[SCALA] 스칼라의 방법 및 기능의 차이점 (0) | 2019.10.28 |
[SCALA] 스칼라에서 밑줄의 모든 용도는 무엇입니까? (0) | 2019.10.28 |
[SCALA] 어떻게 스파크 DataFrame를 피벗? (0) | 2019.10.28 |