2017-09-19 2 views
2

Ich kenne mindestens 2 Möglichkeiten, meine Abhängigkeiten in einen Spark EMR Job zu bekommen. Eine besteht darin, ein Fat-Jar zu erstellen, und eine andere besteht darin, mit der Option --packages anzugeben, welche Pakete in Spark übergeben werden sollen.Spark, Alternative zu Fettglas

Das Fettglas nimmt ziemlich viel Zeit in Anspruch. Ist das normal? ~ 10 Minuten. Ist es möglich, dass wir es falsch konfiguriert haben?

Die Befehlszeilenoption ist in Ordnung, aber fehleranfällig.

Gibt es Alternativen? Ich würde es gerne sehen, wenn es (schon vorhanden) eine Möglichkeit gäbe, die Abhängigkeitsliste in das Jar mit Gradle einzubinden, dann lade sie herunter. Ist das möglich? Gibt es andere Alternativen?

Update: Ich poste eine Teilantwort. Eine Sache, die ich in meiner ursprünglichen Frage nicht klar gemacht habe, war, dass ich auch kümmern, wenn Sie Abhängigkeitskonflikte haben, weil Sie das gleiche Glas mit verschiedenen Versionen haben.

Antwort

1

Das Fettglas braucht in der Tat viel Zeit zu erstellen. Ich konnte ein wenig optimieren, indem ich die Abhängigkeiten löste, die zur Laufzeit nicht benötigt wurden. Aber es ist wirklich ein Schmerz.

0

HubSpot hat eine (Teil-) Lösung: SlimFast. Sie können eine Erklärung hier http://product.hubspot.com/blog/the-fault-in-our-jars-why-we-stopped-building-fat-jars finden und Sie können den Code hier https://github.com/HubSpot/SlimFast

effektiv speichert alle Gläser, es wird immer auf s3 benötigen, so finden, wenn es baut sie es tut, ohne die Gläser Verpackung, aber wenn es muss run it bekommt sie von s3. Ihre Builds sind also schnell und Downloads dauern nicht lange.

Ich denke, wenn dies auch die Fähigkeit hatte, die Wege des Glases beim Hochladen zu schattieren, um Konflikte zu vermeiden, dann wäre es eine perfekte Lösung.