Привет, люди Земли! Я использую Airflow для планирования и запуска задач Spark. Все, что я обнаружил к этому времени, - это PAGON DAG, которым Airflow может управлять. Пример DAG:
spark_count_lines.py
import logging
from airflow import DAG
from airflow.operators import PythonOperator
from datetime import datetime
args = {
'owner': 'airflow'
, 'start_date': datetime(2016, 4, 17)
, 'provide_context': True
}
dag = DAG(
'spark_count_lines'
, start_date = datetime(2016, 4, 17)
, schedule_interval = '@hourly'
, default_args = args
)
def run_spark(**kwargs):
import pyspark
sc = pyspark.SparkContext()
df = sc.textFile('file:///opt/spark/current/examples/src/main/resources/people.txt')
logging.info('Number of lines in people.txt = {0}'.format(df.count()))
sc.stop()
t_main = PythonOperator(
task_id = 'call_spark'
, dag = dag
, python_callable = run_spark
)
Проблема в том, что я не очень хорош в коде Python и имею некоторые задачи, написанные на Java. Мой вопрос заключается в том, как запустить Spark Java jar в python DAG? Или, может быть, есть еще один способ сделать это? Я нашел искра submit: http://spark.apache.org/docs/latest/submitting-applications.html
Но я не знаю, как соединить все вместе. Возможно, кто-то использовал его раньше и имеет рабочий пример. Спасибо за ваше время!