如何在气流中运行 Spark 代码?
你好,地球人!我正在使用 Airflow 来计划和运行 Spark 任务。到这个时候,我发现的只是Airflow可以管理的python DAG。
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编写的。我的问题是如何在python DAG中运行Spark Java jar?或者也许还有其他方法可以做到这一点?我发现了spark submit:http://spark.apache.org/docs/latest/submitting-applications.html
但是我不知道如何将所有内容连接在一起。也许有人以前用过它,并且有工作的例子。感谢您抽出宝贵时间接受采访!