google-cloud-platform - 气流将最新文件从 GCS 存储桶复制到本地
问题描述
我想使用气流作曲家将最新文件从 gcs 存储桶复制到本地。我试图使用 gustil cp 获取最新文件并加载到本地气流中,但遇到问题: CommandException: No URLs match error 。如果我检查 XCom 我得到 value='Objects' 。有什么建议吗?
download_file = BashOperator(
task_id='download_file',
bash_command="gsutil cp $(gsutil ls -l gs://<bucket_name> | sort -k 2 | tail -1 | awk '''{print $3}''') /home/airflow/gcs/dags",
xcom_push=True
)
解决方案
执行 gsutil 命令gsutil ls -l gs://<bucket_name> | sort -k 2 | tail -1 | awk '''{print $3}'''
还将显示总大小、对象等的行,将按日期排序然后获取最后一行并获取行的第三列。这就是为什么您将“对象”作为如下输出示例的值:
总计:6 个对象,28227013 字节 (26.92 MiB)
尝试使用此代码仅获取倒数第二行:
download_file = BashOperator(
task_id='download_file',
bash_command="gsutil cp $(gsutil ls -l gs://bucket_name | sort -k 2 | tail -2 | head -n1 | awk '''{print $3}''') /home/airflow/gcs/dags",
xcom_push=True
)
推荐阅读
- php - 将具有特殊字符的 csv 文件导入 MYSQL 数据库时出现问题
- flutter - 需要进行热重载才能运行应用程序
- entity-framework - 实体框架 AddOrUpdate 未在更新时设置 FK 值
- r - ggplot颜色,形状和大小按数据框中的因子变量在几个带有图例的区域
- javascript - 请问我怎样才能达到预期的结果
- javascript - Group Anagrams 算法性能
- javascript - Google Analytics dataLayer.push 在 Javascript Promise 中不起作用
- python - Python 上的 Selenium - 提交方法似乎无法正确发送请求?
- python - xmlschema 元素不是架构的元素
- javascript - 使用promise.all 使用rn-fetch-blob 下载图像?