在独立群集上提交Spark应用程序

时间:2016-06-14 15:19:45

标签: java amazon-web-services apache-spark

我很擅长使用Spark,而且我在独立群集上运行简单的字数统计应用程序时遇到问题。我有一个由一个主节点和一个工作组成的集群,使用spark-ec2脚本在AWS上启动。当我在本地运行代码时,一切正常 ./bin/spark-submit --class com.spark.SparkDataAnalysis --master local[*] ./uber-ingestion-0.0.1-SNAPSHOT.jar file:///root/textfile.txt s3n://bucket/wordcount

这会将输出保存到指定的目录中。

当我尝试使用运行应用程序时 ./bin/spark-submit --class com.spark.SparkDataAnalysis --master spark://server-ip:7077 ./uber-ingestion-0.0.1-SNAPSHOT.jar file:///root/textfile.txt s3n://bucket/wordcount

它只是继续运行,永远不会产生最终结果。目录已创建,但只存在0字节的临时文件。

根据Spark UI,它会无限期地继续运行mapToPair函数。 Here is a picture of the Spark UI

有谁知道为什么会这样,以及如何解决它?

以下是代码:

public class SparkDataAnalysis {
    public static void main(String args[]){
        SparkConf conf = new SparkConf().setAppName("SparkDataAnalysis");
        JavaSparkContext sc = new JavaSparkContext(conf);

        JavaRDD<String> input = sc.textFile( args[0] );

        JavaRDD<String> words = input.flatMap( s -> Arrays.asList( s.split( " " ) ) );

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

        counts.saveAsTextFile( args[1] );
    }
}

1 个答案:

答案 0 :(得分:0)

我通过spark-ec2脚本跳过使用独立群集,而是使用Amazon EMR。一切都很完美。