Структура рабочего процесса и планирования для Spark с Scala в Maven Выполнено с помощью Intellij IDEA - PullRequest
0 голосов
/ 17 октября 2019

Я создал искровой проект со Scala. Это проект maven со всеми зависимостями, настроенными в POM.

Spark, который я использую как ETL. Исходный файл - это файл, сгенерированный API. Все виды преобразований в spark затем загружают его в cassandra.

Существует ли какое-либо программное обеспечение Workflow, которое может использовать jar для автоматизации процесса с выполнением задания запуска по электронной почте, успешным или неудачным выполнением.

Может кто-нибудь, пожалуйста, помогите мне ..... если для этой цели можно использовать воздушный поток, я использовал СКАЛА, а НЕ Python

Пожалуйста, поделитесь своими мыслями.

1 Ответ

0 голосов
/ 17 октября 2019

В 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, установить конфигурации и т. д.

...