/ / Ignorujte vlastné nádoby na iskry - apache-iskra

Ignorovať Cluster Spark Vlastné poháre - apache-spark

Chcel by som použiť svoju vlastnú aplikáciu Spark džbány. Konkrétnejšie mám jednu nádobu mllibu, ktorá ešte nie je vydaná a ktorá obsahuje opravenú chybu BisectingKMeans. Moja myšlienka je teda použiť ju v mojom zoskupení iskier (na miestnej úrovni to funguje perfektne).

Skúsil som veľa vecí: extraclasspath, userClassPathFirst, poháre voľba ... veľa možností, ktoré nefungujú. Mojou poslednou myšlienkou je použiť pravidlo tieňa sbt na zmenu všetkých balíkov org.apache.spark. * Na shadespark. * Ale pri nasadení stále používa klastrové „iskry“.

Nejaký nápad?

odpovede:

0 pre odpoveď č. 1

Môžete skúsiť použiť doplnok tieňa Mavenpremiestniť konfliktné balíčky. Toto vytvorí samostatný priestor názvov pre novšiu verziu nádoby mllib. Stará aj nová verzia teda bude na ceste po triede, ale pretože nová verzia má alternatívny názov môžete sa výslovne obrátiť na novší balík.

Pozri sa na https://maven.apache.org/plugins/maven-shade-plugin/examples/class-relocation.html:

Ak sa Uber JAR opakovane používa ako závislosť niektorýchiný projekt, ktorý priamo zahŕňa triedy závislostí artefaktu v Uber JAR, môže spôsobiť konflikty načítania triedy kvôli duplikovaným triedam na ceste k triede. Aby ste tento problém vyriešili, môžete premiestniť triedy, ktoré sa začlenia do zatieneného artefaktu, aby vytvorte súkromnú kópiu ich bajtkódu:

Túto myšlienku som dostal z videa „Top 5 chýb pri písaní aplikácií s iskrami“: https://youtu.be/WyfHUNnMutg?t=23m1s