В Spark нет встроенного механизма, который бы помог. Работа cron кажется разумной для вашего случая. Если вы обнаружите, что постоянно добавляете зависимости к запланированному заданию, попробуйте Azkaban
, например, один из таких сценариев оболочки: -
#!/bin/bash
cd /locm/spark_jobs
export SPARK_HOME=/usr/hdp/2.2.0.0-2041/spark
export HADOOP_CONF_DIR=/etc/hadoop/conf
export HADOOP_USER_NAME=hdfs
export HADOOP_GROUP=hdfs
#export SPARK_CLASSPATH=$SPARK_CLASSPATH:/locm/spark_jobs/configs/*
CLASS=$1
MASTER=$2
ARGS=$3
CLASS_ARGS=$4
echo "Running $CLASS With Master: $MASTER With Args: $ARGS And Class Args: $CLASS_ARGS"
$SPARK_HOME/bin/spark-submit --class $CLASS --master $MASTER --num-executors 4 --executor-cores 4 "application jar file"
Вы даже можете попробовать использовать spark-launcher, который можно использовать для программного запуска приложения spark: -
Сначала создайте образец приложения spark и создайте для него файл jar.
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
object SparkApp extends App{
val conf=new SparkConf().setMaster("local[*]").setAppName("spark-app")
val sc=new SparkContext(conf)
val rdd=sc.parallelize(Array(2,3,2,1))
rdd.saveAsTextFile("result")
sc.stop()
}
Это наше простое приложение spark,сделайте jar этого приложения, используя сборку sbt, теперь мы создаем приложение scala, через которое мы запускаем это приложение spark следующим образом:
import org.apache.spark.launcher.SparkLauncher
object Launcher extends App {
val spark = new SparkLauncher()
.setSparkHome("/home/knoldus/spark-1.4.0-bin-hadoop2.6")
.setAppResource("/home/knoldus/spark_launcher-assembly-1.0.jar")
.setMainClass("SparkApp")
.setMaster("local[*]")
.launch();
spark.waitFor();
}
В приведенном выше коде мы используем объект SparkLauncher и устанавливаем значения для его like
setSparkHome («/ home / knoldus / spark-1.4.0-bin-hadoop2.6») используется для установки дома спарк, который используется внутри для вызова спарк-отправки.
.setAppResource («/Home/knoldus/spark_launcher-assembly-1.0.jar») используется для указания jar нашего приложения spark.
.setMainClass («SparkApp») точка входа в программу spark iПрограмма драйвера.
.setMaster («local [*]») задает адрес мастера, с которого он начинается здесь, теперь мы запускаем его на локальной машине.
.launch () - просто запускнаше искровое приложение.
Это минимальное требование, вы также можете установить множество других конфигураций, таких как передать аргументы, добавить jar, установить конфигурации и т. д.