Java apachespark:NoSuchMethodError
我试图在Apache Spark(v1.3.0)上进行一些测试,我有一个简单的Java 8类:Java apachespark:NoSuchMethodError,java,maven,apache-spark,Java,Maven,Apache Spark,我试图在Apache Spark(v1.3.0)上进行一些测试,我有一个简单的Java 8类: public class WordCount { private JavaSparkContext ctx; private String inputFile, outputFile; public WordCount(String inputFile, String outputFile) { this.inputFile = inputFile;
public class WordCount {
private JavaSparkContext ctx;
private String inputFile, outputFile;
public WordCount(String inputFile, String outputFile) {
this.inputFile = inputFile;
this.outputFile = outputFile;
// Initialize Spark Conf
ctx = new JavaSparkContext("local", "WordCount",
System.getenv("SPARK_HOME"), System.getenv("JARS"));
}
public static void main(String... args) {
String inputFile = "/home/workspace/spark/src/main/resources/inferno.txt";//args[0];
String outputFile = "/home/workspace/spark/src/main/resources/dv";//args[1];
WordCount wc = new WordCount(inputFile, outputFile);
wc.doWordCount();
wc.close();
}
public void doWordCount() {
long start = System.currentTimeMillis();
JavaRDD<String> inputRdd = ctx.textFile(inputFile);
JavaPairRDD<String, Integer> count = inputRdd.flatMapToPair((String s) -> {
List<Tuple2<String, Integer>> list = new ArrayList<>();
Arrays.asList(s.split(" ")).forEach(s1 -> list.add(new Tuple2<String, Integer>(s1, 1)));
return list;
}).reduceByKey((x, y) -> x + y);
Tuple2<String, Integer> max = count.max(new Tuple2Comparator());
System.out.println(max);
// count.saveAsTextFile(outputFile);
long end = System.currentTimeMillis();
System.out.println(String.format("Time in ms is: %d", end - start));
}
public void close() {
ctx.stop();
}
}
这是mi pom文件:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<groupId>it.conker.spark</groupId>
<artifactId>learning-spark-by-example</artifactId>
<modelVersion>4.0.0</modelVersion>
<name>Learning Spark by example</name>
<packaging>jar</packaging>
<version>0.0.1</version>
<dependencies>
<dependency> <!-- Spark dependency -->
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>1.3.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<properties>
<java.version>1.8</java.version>
</properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
它,康克,斯帕克
以身作则
4.0.0
以身作则
罐子
0.0.1
org.apache.spark
spark-core_2.10
1.3.0
假如
朱尼特
朱尼特
4.11
测试
1.8
org.apache.maven.plugins
maven编译器插件
3.1
${java.version}
${java.version}
我在eclipse中运行这个类。
有人能告诉我哪里错了吗?我相信这是一个错误,它将在所有即将发布的Spark maintenance版本中修复(请参阅我的)
我没有测试过的一种解决方法是在调用
max()
之前将count
转换为JavaRDDLike
,因为类似的解决方法也适用于其他人(请参阅我的).您应该更改spark的依赖范围,使其成为编译范围,如果您尝试在本地计算机上运行,它将正常工作。嗨,Josh,我在spark-1.4和spark streaming中遇到了类似的错误,我相信尚未添加修复程序。你的变通方法到底是如何运作的?我不明白,你能详细解释一下吗?这是我在stackoverflow-@tsar2512中的问题:你能在Spark的JIRA问题跟踪程序上对此提交一张罚单吗@乔希·罗森-可以。。。顺便问一下,你的变通方法还有效吗?您能进一步解释一下吗?我可以确认此解决方案仍然有效,但我想知道它为什么有效,因此如果有人知道,我将非常感谢他们的解释。@randombee,有关此解决方案历史的更多背景信息,请参阅与此Spark问题相关的Scala bug。
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.spark.api.java.JavaPairRDD.max(Ljava/util/Comparator;)Lscala/Tuple2;
at it.conker.spark.base.WordCount.doWordCount2(WordCount.java:69)
at it.conker.spark.base.WordCount.main(WordCount.java:41)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<groupId>it.conker.spark</groupId>
<artifactId>learning-spark-by-example</artifactId>
<modelVersion>4.0.0</modelVersion>
<name>Learning Spark by example</name>
<packaging>jar</packaging>
<version>0.0.1</version>
<dependencies>
<dependency> <!-- Spark dependency -->
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>1.3.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<properties>
<java.version>1.8</java.version>
</properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>