gpt4 book ai didi

java - 方案 : hdfs when building fat jar in Spark; works fine in Eclipse mars 没有文件系统

转载 作者:可可西里 更新时间:2023-11-01 16:43:34 25 4
gpt4 key购买 nike

当我用我的 spark 程序做一个 fat jar 然后我启动它时,我得到了这个错误:

java -jar -myApp.jar [args]

当我在 Eclipse 中运行我的应用程序时,它运行得非常好。这是我的 POM:

 <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>

<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming-kafka_2.10</artifactId>
<version>1.5.0</version>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.10</artifactId>
<version>0.9.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming_2.10</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.6.2</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.6.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<source>1.7</source>
<target>1.7</target>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>reference.conf</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>gft.hbaseMedia.MainSparkCopyHDFS</mainClass>
</transformer>
</transformers>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>resources</directory>
</resource>
</resources>
</build>
</project>

出问题的代码是:

Configuration conf = new Configuration();
conf.set("fs.defaultFS", hdfsConfPath);
FileSystem fs = FileSystem.get(conf);

我知道是 Maven 搞砸了,但我不知道如何解决这个问题!

最佳答案

看起来@amitmah 指出我的答案确实是正确的(谈论投票第二多的答案,maven-shade transformer)。
第一个给出了 ClassNotFound 异常,maven 阴影转换器也给出了它。
我的解决方案是只使用 Sparks 已有的东西,
应用我问题下评论中给出的答案(适用于使用 Maven Shade 的人),
删除 hdfs 依赖项,因为它在运行时会产生某种冲突,因此在 maven 构建期间不会出错。
以下是 pom 中的转换器:

 <transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>reference.conf</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>gft.hbaseMedia.MainSparkCopyHDFS</mainClass>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
</transformers>

关于java - 方案 : hdfs when building fat jar in Spark; works fine in Eclipse mars 没有文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38339601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com