将TFX-TFRS教程转为Airflow管道时遇文件匹配错误求助
问题:TFX-TFRS转Airflow管道时路径匹配错误
我正在将TFX-TFRS的推荐排序教程转换为Airflow管道。使用LocalDagRunner()运行管道时无任何错误,但通过Airflow Web-UI触发AirflowDagRunner()运行时,抛出如下错误:
RuntimeError: Split pattern data/* does not match any files.
数据文件夹内确实存在CSV数据集,两种运行方式均使用标准CsvExampleGen组件。读取数据集的路径代码如下:
PIPELINE_NAME = 'TFRS-ranking' # Directory where MovieLens 100K rating data lives DATA_ROOT = os.path.join('data', PIPELINE_NAME)
解决方案
- 改用绝对路径:Airflow Worker的运行工作目录和本地调试时不同,相对路径会导致文件找不到。修改路径代码为绝对路径:
import os # 获取当前脚本所在目录的绝对路径 BASE_DIR = os.path.dirname(os.path.abspath(__file__)) DATA_ROOT = os.path.join(BASE_DIR, 'data', PIPELINE_NAME) - 检查文件权限:确保Airflow运行用户对
data/TFRS-ranking文件夹及内部CSV文件拥有读取权限,避免因权限问题导致文件无法被识别。 - 确认Worker工作目录:查看Airflow任务日志,定位Worker实际运行的工作目录,确保
data/TFRS-ranking文件夹存在于该目录下,或调整路径指向正确位置。 - 用Airflow变量管理路径:将数据路径配置为Airflow变量,在代码中读取该变量,适配不同环境的路径设置,避免硬编码路径的局限性。
内容的提问来源于stack exchange,提问作者Sebastian Sätzler
相关产品推荐
相关产品推荐

