我试图提交一个jar来激发,但是我的jar包含了与spark内置的jar (snakeyml和其他的)冲突的依赖项。
是否有一种方法可以告诉spark,比/jar 中的/jar更喜欢我的项目的依赖项?
当我运行submit时,会得到以下例外:
Caused by: java.lang.NoSuchMethodError: javax.validation.BootstrapConfiguration.getClockProviderClassName()Ljava/lang/String;
at org.hibernate.validator.internal.xml.ValidationBootstrapParameters.<init>(ValidationBootstrapParameters.java:63)
at org.hibernate.validator.internal.engine.ConfigurationImpl.parseValidationXml(ConfigurationImpl.java:540)
at org.hibernate.validator.internal.engine.ConfigurationImpl.buildValidatorFactory(ConfigurationImpl.java:337)
at javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:110)
at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:501)
at org.hibernate.cfg.beanvalidation.TypeSafeActivator.activate(TypeSafeActivator.java:84)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:132)
... 41 more这是由于星星之火有一个旧版本的验证-api (validation-api-1.1.0.Final.jar),我的项目依赖于更新的版本,并且它确实与我的jar (javax.validation:validation-api:jar:2.0.1.Final:compile)捆绑在一起。
我使用以下命令提交:
/spark/bin/spark-submit --conf spark.executor.userClassPathFirst=true --conf spark.driver.userClassPathFirst=true但我还是得到了同样的例外
发布于 2018-08-16 19:24:05
如果使用SBT构建jar,则需要排除集群中的那些类。例如,如下所示:
"org.apache.spark" %% "spark-core" % "2.2.0" % "provided"您这样做是通过添加“提供”,这意味着这些类已经在您运行它的环境中提供了。
发布于 2018-08-17 08:02:53
不确定是否使用SBT,但我通过程序集在build.sbt中使用了这一点,因为在某一阶段还存在一些依赖冲突。看下面,也许这会有帮助。

发布于 2019-05-31 00:26:13
这是通过将以下内容设置为true来控制的:
spark.driver.userClassPathFirst
spark.executor.userClassPathFirsthttps://stackoverflow.com/questions/51883862
复制相似问题