복붙노트

[HADOOP] 사용하여 내 프로그램을 배포 할 때 java.lang.NoSuchMethodError 불꽃을 제출

HADOOP

사용하여 내 프로그램을 배포 할 때 java.lang.NoSuchMethodError 불꽃을 제출

// 링크 : 좀 S3A에 데이터를 업로드하는 프로그램을 쓰고 있어요. 이 프로그램은 MVN 설치를 통해 컴파일됩니다. (자바 -jar jarfile.jar를 사용하여 같이) 로컬 프로그램을 실행하면 오류를 반환하지 않습니다. 내가 사용하는 경우에는, (불꽃 제출 jarfile.jar를 사용하여 같이) 스파크를 제출, 그러한 오류를 반환했습니다 :

내 소스 코드의이 부분에 추적 오류 로그 :

sparkDataset
        .write()
        .format("parquet")
        .mode(SaveMode.Overwrite)
        .save("some s3a:// link");

여기서 sparkDataset는 org.apache.spark.sql.Dataset의 인스턴스이다.

아파치 스파크에서 // 파일 : S3A에 액세스하는 방법을 시도? 실패와 같은 또 다른 오류를 반환했습니다 :

나는 compatilibity이 문제가되지 않는, 로컬로 실행 할 수 있기 때문에 V는 가능성이 () org.apache.hadoop.conf.Configuration.reloadExistingConfigurations : java.lang.NoSuchMethodError에서 문제.

또한, 이러한 내가 사용 관련 라이브러리의 버전은 다음과 같습니다 :

// 링크 : 나는 S3A를 통해 기록 된 파일을 기대하고있다. 내가 로컬로 실행 할 수 있기 때문에 의존성이 문제가되지 않습니다 생각합니다. 이 프로그램을 실행하기 위해 스파크가 제출 사용할 때 나는 단지이 문제에 직면하고 있습니다. 누군가는이 문제를 해결하는 방법에 대한 아이디어가?

편집 : 또한, 나는 불꽃의 스파크 버전이 위의 하둡 2.7을 위해 만들어진 것으로 알려져 제출할 것을 확인했다. 나는 엄격하게 하둡 3.0.0을 사용하고 있습니다. 이 같은 오류를 내 프로그램에서 일어난 이유에 대한 단서가 될 수 있을까?

해결법

  1. ==============================

    1.하둡 내 자신의 빌드 제출 스파크 실행의 대답은 내 자신의 솔루션을 찾는 나를 인도하는 것했다.

    하둡 내 자신의 빌드 제출 스파크 실행의 대답은 내 자신의 솔루션을 찾는 나를 인도하는 것했다.

    내 이해를 바탕으로, 어떤 알 수없는 이유 *를 들어, 스파크가 제출 분포가 제공하는 '스파크 2.4.0 - 빈 - hadoop2.7.tgz은'응용 프로그램에서 함께 컴파일 하둡의 패키지를 제외합니다.

    메소드 reloadExistingConfiguration는 하둡 버전 2.8.x.까지 존재하지 않기 때문에 NoSuchMethodError 오류가 제기 된 이유는 마루를 작성하는 것은 어떻게 든 길을 따라이 특정 메소드를 호출 것 같았다.

    내 솔루션을 연결하면서 불꽃 제출에 패키지를 제외하더라도 하둡의 올바른 버전을 사용할 정도로 3.0.0 하둡 '스파크-2.4.0-없이-hadoop.tgz'의 별도의 배포판을 사용하는 것입니다 실행시 응용 프로그램입니다.

    패키지에 의해 배제 될 수 있기 때문에 또한, 나는 Maven을 통해 컴파일시 지방 항아리를 만들 것이다, 어쨌든 스파크 제출합니다. 대신, 내 응용 프로그램을 실행하는 데 필요한 종속성을 지정하는 실행 중에 플래그 --packages을 사용합니다.

  2. from https://stackoverflow.com/questions/55756104/java-lang-nosuchmethoderror-when-deploying-my-program-using-spark-submit by cc-by-sa and MIT license