-2

我在本地机器和集群中运行 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 个工人。其中之一是驱动节点,其余的作为工作节点运行。

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

4

1 回答 1

0

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

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

看起来您可能已经为 和 定义了两个不同的环境scspark正如您local[*]明确定义的那样,sc同时采用了一些默认值spark(可能读取外部配置文件或从 获取所谓的主 URL spark-submit)。

这些可能会有所不同,可能会影响您使用的内容。

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

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

于 2017-05-22T14:19:41.603 回答