Java+Spark wordCount 与 EMR

Java+Spark wordCount with EMR

我一直在尝试 运行 Pi 估计和 wordCount 示例 https://spark.apache.org/examples.html in JavaEMR

Pi 估计工作正常,所以我假设一切设置正确。 但是我得到这个错误与 wordCount:

Exception in thread "main" org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: hdfs://XXX/user/hadoop/input.txt

在运行执行此命令之前,我已经从 s3 下载了我的 input.txt 和我的 jar:

spark-submit --class "wordCount" --master local[4] Spark05-1.1.jar input.txt

这是我的 wordCount 代码:

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 scala.Tuple2;

import java.util.Arrays;

public final 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> textFile = sparkContext.textFile(args[0]);
        JavaPairRDD<String, Integer> counts = textFile
                .flatMap(s -> Arrays.asList(s.split(" ")).iterator())
                .mapToPair(word -> new Tuple2<>(word, 1))
                .reduceByKey((a, b) -> a + b);
        counts.saveAsTextFile("result.txt");


    }
}

我做错了什么吗?

如果您没有在 hdfs 上加载 input.txt,请将其放入 hdfs 后再试。

或者,尝试使用前缀为 'file' 的完整路径,例如)file://{YOUR_FILE_PATH}.
我相信这是因为来自 spark 配置的 'fs.defaultFS' 是 'hdfs'.