【发布时间】:2018-05-30 19:10:10
【问题描述】:
当我尝试使用 Eclipse 在 Spark Java 中运行一个简单的字数统计时,我在一个新的弹出 Java 虚拟机启动器窗口中遇到 Java 错误,该窗口显示 -
发生了 Java 异常。
java -version
Java Virtual Machine Launcher
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
下面是代码:
package com.fd.spark;
import java.util.Arrays;
import java.util.Iterator;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.FlatMapFunction;
import org.apache.spark.api.java.function.Function2;
import org.apache.spark.api.java.function.PairFunction;
import scala.Tuple2;
public class SparkWordCount {
public static void main(String[] args) throws Exception {
String inputFile = "/Spark/inp1";
String outputFile = "/Spark/out1";
// Create a Java Spark Context.
SparkConf conf = new SparkConf().setAppName("wordCount").setMaster("local");
JavaSparkContext sc = new JavaSparkContext(conf);
// Load our input data.
JavaRDD<String> input = sc.textFile(inputFile);
// Split up into words.
JavaRDD<String> words = input.flatMap(
new FlatMapFunction<String, String>() {
public Iterator<String> call(String x) {
return (Iterator<String>) Arrays.asList(x.split(" "));
}});
// Transform into word and count.
JavaPairRDD<String, Integer> counts = words.mapToPair(
new PairFunction<String, String, Integer>(){
public Tuple2<String, Integer> call(String x){
return new Tuple2(x, 1);
}}).reduceByKey(new Function2<Integer, Integer, Integer>(){
public Integer call(Integer x, Integer y){ return x + y;}});
// Save the word count back out to a text file, causing evaluation.
counts.saveAsTextFile(outputFile);
}
}
【问题讨论】:
-
您使用的是什么版本的 spark,您还可以发布错误的堆栈跟踪吗?
-
我认为 Spark 不再支持 Java 7
-
我使用的 Spark 版本是 2.2.1 及以下是堆栈跟踪错误 线程“main”java.lang.UnsupportedClassVersionError 中的异常:org/apache/spark/api/java/function/FlatMapFunction:不支持major.minor 版本 52.0 在 java.lang.ClassLoader.defineClass1(Native Method) 在 java.lang.ClassLoader.defineClass(Unknown Source) 在 java.security.SecureClassLoader.defineClass(Unknown Source) 在 java.net.URLClassLoader.defineClass( Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source)
标签: java hadoop apache-spark word-count jdk1.7