我在本地计算机和群集中运行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名工作人员。其中一个是驱动程序节点,其余的是作为工作程序运行。
我希望结果应该相同。但是,本地和集群两部分的结果是不同的。这个问题的原因是什么?
答案 0 :(得分:0)
我使用以下代码
为本地机器创建SparkContext对象
和
我使用以下代码为集群创建SparkContext对象:
出现您可能为sc
和spark
定义了两个不同的环境,因为您为local[*]
明确定义了sc
spark
的默认值(可以读取外部配置文件或从spark-submit
获取所谓的主URL)。
这些 可能与可能影响您使用的内容不同。
我希望结果应该相同。但是,本地和集群两部分的结果是不同的。这个问题的原因是什么?
Dataset.txt
您在本地与群集环境中的处理方式不同,因此结果也不同。我强烈建议使用HDFS或其他一些共享文件系统,以避免将来出现这种“意外”。