Pyspark Spark提交作业:FileNotFoundError:[Errno 2]没有这样的文件或目录

Pyspark Spark提交作业:FileNotFoundError:[Errno 2]没有这样的文件或目录,pyspark,airflow,Pyspark,Airflow,我需要征求你的意见,看看这里的根本原因是什么。 请原谅我的知识,因为我是一个初学者在使用气流以及使用pyspark 我们的spark群集有1个主节点、2个工作节点和2个数据节点。 气流正在主节点上运行 我有一个spark提交作业,可以使用以下命令成功运行该作业:(*): sh spark-submit.sh job.py 这项工作基本上是从Hadoop读取数据,进行一些转换和聚合,然后再转换回pandas,以方便pandas.melt()以及pandas.to_csv()命名 当在气流dag中

我需要征求你的意见,看看这里的根本原因是什么。 请原谅我的知识,因为我是一个初学者在使用气流以及使用pyspark

我们的spark群集有1个主节点、2个工作节点和2个数据节点。 气流正在主节点上运行

我有一个spark提交作业,可以使用以下命令成功运行该作业:(*)

sh spark-submit.sh job.py
这项工作基本上是从Hadoop读取数据,进行一些转换和聚合,然后再转换回pandas,以方便pandas.melt()以及pandas.to_csv()命名

当在气流dag中作为Bash操作符触发此命令时,将导致:

FileNotFoundError: [Errno 2] No such file or directory
在写入操作期间-pd_df.to_csv()。我意识到任何操作系统路径和目录函数也会失败。我知道工作节点的文件夹结构与主节点不同,但如果这是根本原因,为什么我在(*)中的作业会成功?我的印象是,当我执行spark_df.toPandas()时,所有数据都将在主节点中收集,并将使用“本地”python以及“本地”文件夹结构

现在获得输出的唯一有效方法是使用spark_df.write

此时,我怀疑我们的气流设置可能存在一些配置问题

我还想强调的是,我必须将所有代码、它们的依赖项和dag.py复制到工作节点,否则它也无法工作。作为一个用户,我觉得这很奇怪。为什么气流不能帮助将代码分发到工作节点

提前谢谢你,我很感激能得到的任何帮助


编辑: 添加更多信息:

  • 文件结构&火花作业的位置&气流DAG的位置
  • 接线员长得怎么样
文件结构:

+ /var/lib/airflow/dags
| dag.py
| + scripts/
| | + proj_a/
| | | spark-submit.sh
| | | job.py
文件夹结构和文件的精确副本将复制到工作节点

“dag.py”中的运算符


你能分享文件结构吗?气流DAG位于哪里,操作员看起来怎么样,火花作业在哪里?@PhilippJohannis嗨,我刚刚添加了信息:D
task_1 = BashOperator(
    task_id='job',
    bash_command='sh /var/lib/airflow/dags/scripts/proj_a/spark-submit.sh /var/lib/airflow/dags/scripts/proj_a/job.py',
    dag=dag
)