【问题标题】:Airflow ModuleNotFoundError: No module named 'pyspark'Airflow ModuleNotFoundError:没有名为“pyspark”的模块
【发布时间】: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,你确定当你在你的机器上启动pyspark shell 时,它也使用了相同的Python 3.7
  • 您好,我遇到了同样的问题。 AirFlow 和 Spark 安装在同一节点上。你解决了吗?

标签: apache-spark pyspark airflow


【解决方案1】:

您好像不见了pyspark

运行以下命令:

pip install pyspark

【讨论】:

  • 谢谢@kaxil ...但是,为什么我必须安装 pyspark 包(pip install pyspark),而气流和 spark 安装在同一台机器上,我可以从任何目录运行 pyspark(SPARK_HOME已添加到我的 .profile 文件中)?
  • 您是否在同一环境中运行 Airflow 和 PySpark?还是您在虚拟环境中运行 Airflow?
  • 确实,Airflow 是从它自己的虚拟环境(在我的本地机器上)运行的。 Spark 以传统方式安装在我的本地机器上(没有虚拟环境)。顺便说一句, ($ pyspark) 从环境环境气流中正确启动。我错过了什么?
猜你喜欢
  • 2021-01-18
  • 2020-02-07
  • 2021-11-23
  • 2019-03-28
  • 2022-01-07
  • 2021-05-24
  • 2017-12-14
  • 2020-12-10
相关资源
最近更新 更多