1
私は現在、スパークストリーミングを使用していません。私はETLパイプラインを持っており、完了した後に仕事を再提出するだけです。典型的なcronジョブと同じですが、Spark APIのみを使用しています。それは可能ですか?完了後にSparkでジョブを再送信するには?
私は現在、スパークストリーミングを使用していません。私はETLパイプラインを持っており、完了した後に仕事を再提出するだけです。典型的なcronジョブと同じですが、Spark APIのみを使用しています。それは可能ですか?完了後にSparkでジョブを再送信するには?
チェックSparkLauncherと、このような何か試してください:あなたはSparkLauncher
でプログラム的にジョブを送信することができます。これにより
import org.apache.spark.launcher.SparkLauncher;
public class MyLauncher {
public static void main(String[] args) throws Exception {
while(true){
Process spark = new SparkLauncher()
.setAppResource("app.jar")
.setMainClass("package.MainClass")
.setMaster("local")
.setConf(SparkLauncher.DRIVER_MEMORY, "1g")
.launch();
spark.waitFor(); <-- Causes the current thread to wait, if necessary, until the process represented by this Process object has terminated.
}
}
}
を。 launch()
はjava Process
を返します。処理が完了するまで待ってから、while
でジョブを再送信してください。
私はが単独でジョブを再開できることに気づいていません。
SparkLauncherにSparkConfを設定する方法があったとしたら、SparkLauncher()を実行するだけで済みます。setSparkConf(sparkConf).launch() – user1870400
確かに、必要な場合は、あなたはSparkLauncherを拡張し、 'setSparkConf(SparkConf sparkConf)'とSparkConf 'getAll'設定を作成し、' setConf(actConf.key、actConf.value) 'を使ってforループに設定することで、 – VladoDemcak