当前位置: 首页 > 知识库问答 >
问题:

spark如何将培训任务平均分配给各个执行者?

钮才哲
2023-03-14
spark = SparkSession\
    .builder.appName("multilayer_perceptron_classification_example").getOrCreate()

data = spark.read.format("libsvm")\
    .load("C:/spark/spark-2.3.2-bin-hadoop2.7/data/mllib/sample_multiclass_classification_data1.txt")

splits = data.randomSplit([0.6, 0.4], 1234)
train = splits[0]   
test = splits[1] 

layers = [4, 500, 500, 500, 3]

trainer = MultilayerPerceptronClassifier(maxIter=100, layers=layers, blockSize=128, seed=1234)

model = trainer.fit(train)

result = model.transform(test)
predictionAndLabels = result.select("prediction", "label")
evaluator = MulticlassClassificationEvaluator(metricName="accuracy")
print("Test set accuracy = " + str(evaluator.evaluate(predictionAndLabels)))

spark.stop()

共有1个答案

傅增
2023-03-14

检查分区数(data.rdd.partitions.size),很可能是1。分区内火花的并行化单位。Spark使用的执行器不会超过数据分区的数量。

要解决这个问题,可以将sample_multiclass_classification_data1.txt中的数据拆分到多个文件中,或者重新分区

num_partitions = 32
data = spark.read.format("libsvm")\
    .load("C:/spark/spark-2.3.2-bin-hadoop2.7/data/mllib/sample_multiclass_classification_data1.txt").repartition(num_partitions)

相关问题:根据工作者、核心和数据流大小确定最佳火花分区数

 类似资料:
  • 假设我正在从S3文件夹中读取100个文件。每个文件的大小为10 MB。当我执行<code>df=spark.read时。parquet(s3路径),文件(或更确切地说分区)如何在任务之间分布?E、 g.在这种情况下,<code>df</code>将有100个分区,如果spark有10个任务正在运行以将该文件夹的内容读取到数据帧中,那么这些分区是如何分配给这10个任务的?它是以循环方式进行的,还是每

  • 概述 毫末的技术人员,需要掌握的技能从以下几个方面逐步提升: 工作必备技能。通过老员工在实际项目中教授新员工的方式。例如:git、jira等。 编码能力。编码能力,对我们公司而言是非常重要的基本功。将通过代码质量流程、以考促学等方式促进员工编码能力提升。 调试技巧。调试技巧对工作中解决问题而言非常关键。 理论知识。主要指的工作中经常用到的框架、工具背后的工作原理。 初级培训 初级升中级培训 中级升

  • 我正在一个由15台机器组成的裸机集群上制作Flink流媒体应用程序的原型。我使用的是90个任务槽(15x6)的纱线模式。 该应用程序从单个Kafka主题读取数据。Kafka主题有15个分区,所以我也将源操作符的并行性设置为15。然而,我发现Flink在某些情况下会将2-4个消费者任务实例分配给同一个taskmanager。这会导致某些节点受到网络限制(Kafka主题是提供大量数据,而机器只有1G

  • 我有Spark 2.1.0运行在一个有N个从节点的集群上。每个节点有16个内核(8个内核/cpu和2个cpu)和1个GPU。我想使用map进程启动一个GPU内核。由于每个节点只有1个GPU,我需要确保两个执行器不在同一个节点上(同时)尝试使用GPU,并且两个任务不会同时提交给同一个执行器。 如何强制 Spark 每个节点有一个执行程序? 我尝试了以下方法: -设置:< code > $ SPARK

  • 我的集群配置如下:-7个节点,每个节点有32个核心和252 GB内存。 纱线配置如下:- map reduce配置如下:- null 在这种情况下,对于纱线调度程序,执行器内存+384最大不能超过10GB。在本例中,9856M+384 MB=10GB,因此它工作正常。现在,一旦spark shell启动,执行程序的总数是124个,而不是请求的175个。每个执行器的spark shell启动日志或s