我已经创建了一个DAG,用于将本地文件上载到个人S3存储桶中。但是,当访问http://localhost:9099/home时,我收到以下错误:
未找到文件错误:[Errno 2]没有这样的文件或目录:'C:\用户\平台\OneDrive\π ο λ ο γ ι σ τ ς\项目备份\数据库\数据库\价格数据. xlsx'
Ariflow error - broken dag
我有一台Windows PC,我正在码头集装箱上运行气流。
下面是DAG的代码:
# airflow related
from airflow import DAG
from airflow.operators.python import PythonOperator
# other packages
from datetime import datetime
import boto3
with DAG(
dag_id='file_to_s3',
start_date=datetime(2022, 12, 5),
catchup=False,
) as dag:
pass
def file_to_s3():
#Creating Session With Boto3.
session = boto3.Session(
aws_access_key_id='my_access_key_id',
aws_secret_access_key='my_secret_access_key'
)
#Creating S3 Resource From the Session.
s3 = session.resource('s3')
result = s3.Bucket('flight-data-test-bucket').upload_file(r'C:\Users\plata\OneDrive\Υπολογιστής\projects backups\airflow-sqlserver\dags\pricedata.xlsx', 'pricedata.xlsx')
return (result)
with DAG(
dag_id='file_to_s3',
start_date=datetime(2022, 12, 5),
catchup=False
) as dag:
# Upload the file
task_file_to_s3 = PythonOperator(
task_id='file_to_s3',
python_callable=file_to_s3()
)
我不明白为什么会发生这种情况,因为我已经将我的本地文件存储到我的"dags"文件夹:
pricedata.xlsx location
我的"dags"文件夹已经安装在 * docker-compose. yml * 文件中,如下所示:
environment:
&airflow-common-env
AIRFLOW__CORE__EXECUTOR: CeleryExecutor
AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow
# For backward compatibility, with Airflow <2.3
AIRFLOW__CORE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow
AIRFLOW__CELERY__RESULT_BACKEND: db+postgresql://airflow:airflow@postgres/airflow
AIRFLOW__CELERY__BROKER_URL: redis://:@redis:6379/0
AIRFLOW__CORE__FERNET_KEY: ''
AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION: 'true'
AIRFLOW__CORE__LOAD_EXAMPLES: 'true'
AIRFLOW__API__AUTH_BACKEND: 'airflow.api.auth.backend.basic_auth'
_PIP_ADDITIONAL_REQUIREMENTS: ${_PIP_ADDITIONAL_REQUIREMENTS:-}
volumes:
- ./dags:/opt/airflow/dags
- ./logs:/opt/airflow/logs
- ./plugins:/opt/airflow/plugins
- ./data:/opt/airflow/data
user: "${AIRFLOW_UID:-50000}:0"
有什么想法吗?这个问题会不会是我通过Docker在Windows上运行Airflow造成的?
1条答案
按热度按时间vu8f3i0k1#
默认情况下,Docker容器的文件系统不与windows共享。
你可以挂载一个驱动器,这样你就可以保存文件,并在你的windows和你的docker之间共享它们:
https://www.docker.com/blog/file-sharing-with-docker-desktop/
注意在你的docker中,你将需要“在你的docker容器中”看到的文件路径
用你的docker compose,它看起来像你的xslx文件是挂载在这里:第一个月
所以我假设,在你的dag代码中,你可以尝试:
result = s3.Bucket('flight-data-test-bucket').upload_file(r'opt/airflow/dags/pricedata.xlsx', 'pricedata.xlsx')
最好在DAG文件夹之外装入一个包含项目数据的其他驱动器。