2017-09-19 8 views
2

Spark EMR 작업에 내 의존성을 부여하는 방법은 적어도 2 가지입니다. 하나는 fat jar를 만들고 다른 하나는 --packages 옵션을 사용하여 spark submit에 원하는 패키지를 지정하는 것입니다.Spark, Fat Jar 대체품

뚱뚱한 항아리는 압축하는 데 꽤 오랜 시간이 걸립니다. 그게 정상인가요? ~ 10 분. 우리가 잘못 구성했을 가능성이 있습니까?

명령 줄 옵션은 훌륭하지만 오류가 발생하기 쉽습니다.

다른 방법이 있습니까? 나는 (이미 존재하는) gradle이있는 항아리에 종속성 목록을 포함시키는 방법을 원한다면, 그것을 다운로드해야한다. 이것이 가능한가? 다른 대안이 있습니까?

업데이트 : 부분 답변을 게시 할 예정입니다. 원래 질문에서 분명히하지 않은 한 가지는 내가 은 다른 버전과 동일한 항아리가 있기 때문에 의존성 충돌이있을 때주의해야한다는 것입니다.

답변

1

뚱뚱한 항아리 만드는 데 실제로 많은 시간이 걸립니다. 런타임에 필요하지 않은 종속성을 제거하여 조금 최적화 할 수있었습니다. 그러나 그것은 정말로 고통입니다.

0

HubSpot에는 (부분) 솔루션 인 SlimFast가 있습니다. 여기 http://product.hubspot.com/blog/the-fault-in-our-jars-why-we-stopped-building-fat-jars에 대한 설명을 찾을 수 있으며 여기에 코드를 찾을 수 있습니다 https://github.com/HubSpot/SlimFast

실제로 s3에 필요한 모든 병을 저장하므로 빌드 할 때 항아리를 포장하지 않고 수행하지만 필요한 경우 실행하면 s3에서 가져옵니다. 따라서 빌드가 빠르며 다운로드가 오래 걸리지 않습니다.

충돌을 피하기 위해 업로드시 항아리 경로를 음영 처리 할 수 ​​있다면 완벽한 솔루션이라고 생각합니다.