【问题标题】:Java Error while running Spark Word Count in Eclipse在 Eclipse 中运行 Spark Word Count 时出现 Java 错误
【发布时间】: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


【解决方案1】:

在 Java 8 中使用以下内容,它会起作用。下面是我在 Java 8 上使用 lamda 函数的代码 sn-p。

public class WordCount {

    public static void main(
            String[] args) {
        SparkConf sparkConf = new SparkConf().setMaster("local").setAppName("JD Word Counter");

        JavaSparkContext sparkContext = new JavaSparkContext(sparkConf);

        JavaRDD<String> inputFile = sparkContext.textFile(*Path_To_TXT_file*);

        JavaRDD<String> wordsFromFile = inputFile.flatMap(content -> Arrays.asList(content.split(" ")).iterator());

        JavaPairRDD<String,Integer> countData = wordsFromFile.mapToPair(t -> new Tuple2<String,Integer>(t,1)).reduceByKey((x, y) -> x + y);

        countData.collect().forEach(t -> System.out.println(t._1+" : "+t._2));
    }
}

【讨论】:

    猜你喜欢
    • 2016-11-05
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多