火花中每个分区数的输出不同

时间:2017-05-22 06:29:16

标签: scala apache-spark apache-spark-standalone

我在本地计算机和群集中运行spark代码。

我使用以下代码为本地机器创建SparkContext对象:

val sc = new SparkContext("local[*]", "Trial")

我使用以下代码为集群创建SparkContext对象:

val spark = SparkSession.builder.appName(args(0)+" "+args(1)).getOrCreate()
val sc = spark.sparkContext

我将本地机器和集群的分区数设置为4,代码为

val dataset = sc.textFile("Dataset.txt", 4)

在我的群集中,我创建了5名工作人员。其中一个是驱动程序节点,其余的是作为工作程序运行。

我希望结果应该相同。但是,本地和集群两部分的结果是不同的。这个问题的原因是什么?

1 个答案:

答案 0 :(得分:0)

  

我使用以下代码

为本地机器创建SparkContext对象

  

我使用以下代码为集群创建SparkContext对象:

出现您可能为scspark定义了两个不同的环境,因为您为local[*]明确定义了sc spark的默认值(可以读取外部配置文件或从spark-submit获取所谓的主URL)。

这些 可能与可能影响您使用的内容不同。

  

我希望结果应该相同。但是,本地和集群两部分的结果是不同的。这个问题的原因是什么?

Dataset.txt您在本地与群集环境中的处理方式不同,因此结果也不同。我强烈建议使用HDFS或其他一些共享文件系统,以避免将来出现这种“意外”。