【发布时间】:2019-09-20 08:43:03
【问题描述】:
我在我的机器上安装了 Airflow,它运行良好,并且我也有一个本地火花(它也可以运行)。
我想使用气流来协调两个火花任务:task_spark_datatransform >> task_spark_model_reco。
与这两个任务关联的两个 pyspark 模块经过测试,在 spark 下运行良好。
我还使用bashOperator* 创建了一个非常简单的 Airflow Dag 来运行每个 spark 任务。例如,对于任务task_spark_datatransform 我有:
task_spark_datatransform = BashOperator (task_id = 'task_spark_datatransform', bash_command = spark_home + 'spark-submit --master local [*]' + srcDir + 'dataprep.py'),
where, in my case, spark_home = '/usr/bin/spark/bin/'
*正如几个关于同一主题的严肃教程中所指出的那样。
问题:为什么 Airflow 无法识别 pyspark?
日志:
[2019-09-20 10:21:21 +0200] [5945] [INFO] Worker exiting (pid: 5945)
[2019-09-20 10:21:51 +0200] [5554] [INFO] Handling signal: ttin
[2019-09-20 10:21:51 +0200] [6128] [INFO] Booting worker with pid: 6128
[2019-09-20 10:21:51,609] {__init__.py:51} INFO - Using executor SequentialExecutor
[2019-09-20 10:21:52,021] {__init__.py:305} INFO - Filling up the DagBag from /home/ach/airflow/dags
[2019-09-20 10:21:52,026] {__init__.py:416} ERROR - Failed to import: /home/ach/airflow/dags/spark_af.py
Traceback (most recent call last):
File "/home/ach/airflow/lib/python3.7/site-packages/airflow/models/__init__.py", line 413, in process_file
m = imp.load_source(mod_name, filepath)
File "/home/ach/airflow/lib/python3.7/imp.py", line 171, in load_source
module = _load(spec)
File "<frozen importlib._bootstrap>", line 696, in _load
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 728, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/home/ach/airflow/dags/spark_af.py", line 3, in <module>
import dataprep
File "/home/ach/airflow/dags/dataprep.py", line 2, in <module>
from pyspark.sql import SparkSession
ModuleNotFoundError: No module named 'pyspark'
【问题讨论】:
-
你确定你的 Airflow 和 PySpark 环境是一致的吗?我看到 Airflow 正在使用
Python 3.7,你确定当你在你的机器上启动pysparkshell 时,它也使用了相同的Python 3.7? -
您好,我遇到了同样的问题。 AirFlow 和 Spark 安装在同一节点上。你解决了吗?
标签: apache-spark pyspark airflow