Ich habe ein Spark-Programm, das mehrere ML-Algorithmen trainiert. Der Code, der die letzte Phase meiner Arbeit erzeugt sieht wie folgt aus (in Kotlin):Wo sind meine zusätzlichen Spark Aufgaben von
val runConfigs = buildOptionsCrossProduct(opts)
log.info("Will run {} different configurations.", runConfigs.size)
val runConfigsRdd: JavaRDD<RunConfiguration> = sc.parallelize(runConfigs)
// Create an RDD mapping window size to the score for that window size.
val accuracyRdd = runConfigsRdd.mapToPair { runConfig: RunConfiguration ->
runSingleOptionSet(runConfig, opts, trainingBroadcast, validBroadcast) }
accuracyRdd.saveAsTextFile(opts.output)
runConfigs
eine Liste von 18 Einzelteile ist. Die Protokollzeile direkt nach der Generierung der Configs zeigt:
17/02/06 19:23:20 INFO SparkJob: Wird 18 verschiedene Konfigurationen ausführen.
Also würde ich höchstens 18 Aufgaben erwarten, da es höchstens eine Aufgabe pro Stufe pro Partition (zumindest das ist mein Verständnis) sein sollte. Allerdings berichtet die Geschichte Server Aufgaben von denen die meisten beenden sehr schnell und, nicht überraschend, erzeugen keine Ausgabe:
Es gibt in der Tat 80 Ausgabedateien erzeugt mit allen aber 18 von ihnen leer . Meine Frage ist, was machen die anderen 80 - 18 = 62 Aufgaben in dieser Phase und warum wurden sie generiert?