ドライバーとエグゼキューターが利用できるように、spark ジョブでいくつかの資格情報をアップロードする必要があります。
私は試した:
import java.nio.file.{ Files, Path, Paths }
val credentialsPath = "/tmp/credentials"
Files.write(path, credentialsAsString) // Write to driver
val nbExecutors = spark.sparkContext.getConf.get("spark.executor.instances").toInt //spark is a SparkSession
spark.range(nbExecutors.toLong).toDF.repartition(nbExecutors).foreachPartition { // hoping that this would write to each executor
(_: Iterator[Row]) =>
val path: Path = Paths.get(credentialsPath)
val _: Path = Files.write(path, credentialsAsString)
()
}
動作しているように見えますが、一部のタスクは失敗します...理由:
org.apache.spark.scheduler.TaskSetManager - Lost task 12.0 in stage 20.0 (TID 4712, some_ip, executor 14): java.io.FileNotFoundException: /tmp/credentials (No such file or directory)
また、他のタスク/エグゼキュータが正常に動作していることがわかります。これにより、それらのエグゼキュータのディスクには正常に書き込みましたが、一部のディスクには書き込みができなかったと思います。
各エグゼキュータに体系的に書き込む方法はありますか?
ありがとう