我从星火发行版(v1.6.2)中的示例开始。我添加了自己的"Hello“示例,效果很好。尝试添加一些使用第三方依赖项(com.google.Cloud:gcloud-java:0.2.5),结果如下:
16/07/22 13:05:26错误SparkUncaughtExceptionHandler:线程ThreadExecutor任务启动工作器中的未命名异常-7,5,com.google.cloud.ServiceOptions.activeGoogleCloudConfig(ServiceOptions.java:282) at com.google.cloud.ServiceOptions.googleCloudProjectId(ServiceOptions.java:294) at com.google.cloud.ServiceOptions.defaultProject(ServiceOptions.java:270) at com.google.cloud.ServiceOptions.(ServiceOptions.java:206) at com.google.cloud.HttpServiceOptions.(HttpServiceOptions.java:153) at com.google.cloud.storage.StorageOptions.(StorageOptions.java:69) (.)
我运行我的代码如下:
spark-1.6.2$ mvn -DskipTests clean package
(lots of time passes...)
spark-1.6.2$ ./bin/run-example JavaGcsTest为了添加依赖项,我将这些行添加到examples/pom.xml中
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>gcloud-java-nio</artifactId>
<version>0.2.5</version>
</dependency>看起来根本原因在于gcloud-java和Spark都依赖于番石榴,也许它们依赖于不同版本的番石榴。
我看了相关的问题,答案表明我做了一个胖罐子。不过,我不知道如何在这里应用这一点,因为示例已经打包到一个胖jar (examples/target/scala-2.10/spark-examples-1.6.2-hadoop2.2.0.jar)中。
我试图更改所使用的番石榴版本,将其从14提高到19 (最新版本),但当然编译失败(SparkEnv.scala:84: MapMaker类中的方法softValues无法在com.google.common.collect.MapMaker中访问)。
希望有人对如何让火花与这个第三方图书馆工作的建议!
发布于 2016-07-25 19:29:43
解决这个问题的一种方法是编译第三方库的阴影版本,并使用该jar作为依赖项。
对于gcloud-java,这个项目已经包含了一个阴影的jar目标,所以在运行mvn package之后,它就在target/gcloud-java-nio-0.2.7-SNAPSHOT-shaded.jar中了。
https://stackoverflow.com/questions/38536004
复制相似问题