Java+Spark wordCount 与 EMR

Posted

技术标签:

【中文标题】Java+Spark wordCount 与 EMR【英文标题】:Java+Spark wordCount with EMR 【发布时间】:2020-04-08 13:15:03 【问题描述】:

我一直在尝试使用 EMR

Java 中运行在 https://spark.apache.org/examples.html 上找到的 Pi 估计和 wordCount 示例>

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");


    

我做错了吗?

【问题讨论】:

【参考方案1】:

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

或者,尝试使用带有前缀“文件”的完整路径,例如)file://YOUR_FILE_PATH。 我相信它,因为 spark config 中的“fs.defaultFS”是“hdfs”。

【讨论】:

成功了,使用了第二个解决方案,file://YOUR_FILE_PATH 非常感谢。

以上是关于Java+Spark wordCount 与 EMR的主要内容,如果未能解决你的问题,请参考以下文章

spark-scala-java实现wordcount

使用java开发spark的wordcount程序

Spark在Yarn上运行Wordcount程序

1.spark的wordcount解析

编写Spark的WordCount程序并提交到集群运行[含scala和java两个版本]

Win7 Eclipse 搭建spark java1.8环境:WordCount helloworld例子