Airflow:TimeSensor感知时间条件
在数据管道工作流中,任务可能需要在特定的时间执行,或者在继续之前等待一定的时间。为了满足这些需求,Apache Airflow提供了TimeSensor,这是一种内置Sensor,可以监控当前时间,并在达到指定时间时触发后续任务。在这篇博文中,我们将深入研究TimeSensor,涵盖它的特性、用例、实现、定制和最佳实践。
介绍TimeSensor
- 时间感知与触发:Airflow 的
TimesSensor
是一种传感器(Sensor)类型的操作符(Operator)。它的主要作用是按照指定的时间规则来感知时间,并且根据时间条件来触发后续的任务流程。例如,它可以等待到某个特定的时间点,如每天的下午 3 点,然后再启动相关的数据处理任务。 - 阻塞任务执行:在满足时间条件之前,
TimesSensor
会阻塞当前任务实例(Task Instance)所在的分支流程。这意味着在指定时间到来之前,后续依赖于该传感器输出的任务不会被执行,从而确保任务是在期望的时间之后才开始运行。
TimesSensor应用场景
定时数据提取与加载(ETL)
场景描述:在数据仓库的 ETL(Extract - Transform - Load)流程中,假设我们需要每天在特定时间从源数据库提取数据。例如,业务要求每天凌晨 2 点开始提取数据,因为这个时候源系统的负载较低,数据更新也基本完成。
实现方式:可以使用TimesSensor
来设置等待时间为凌晨 2 点。在 Airflow 的 DAG(Directed Acyclic Graph)中,TimeSensor
任务会在开始时检查时间,如果当前时间还没到凌晨 2 点,它会一直等待。一旦到达凌晨 2 点,它就会触发后续的数据提取任务,然后依次执行数据转换和加载任务,确保整个 ETL 流程按照预定的时间计划执行。
定期报表生成
场景描述:对于企业的定期报表任务,比如每周五下午 5 点生成本周的销售报表。销售数据在一天内不断更新,需要在特定时间点整合并生成报表。
实现方式:利用TimeSensor
设置等待时间为每周五下午 5 点。当时间到达时,传感器触发报表生成任务,该任务可以从数据库中获取本周的销售数据,进行统计和格式化处理,最终生成销售报表,满足企业对数据时效性和定期性的要求。
系统维护任务调度
场景描述:在系统维护场景中,例如需要在每月的第一天凌晨进行系统日志清理和备份。这个任务需要在特定的日期和时间启动,以避免对日常业务产生影响。
实现方式:通过TimesSensor
设定为每月 1 日凌晨的具体时间,如 0 点。在到达设定时间后,触发日志清理和备份任务,对系统日志进行清理和备份操作,保证系统的稳定性和数据的安全性。
TimeSensor举例
首先,假设已经安装并配置好 Airflow。在 Airflow 中,ETL 流程通常是通过定义 DAG(Directed Acyclic Graph)来实现的。DAG 是一组任务的集合,这些任务按照依赖关系和执行顺序排列。
例如,我们有一个简单的 ETL DAG,它包含三个任务:extract_data
(提取数据)、transform_data
(转换数据)和load_data
(加载数据)。其中extract_data
任务依赖于TimesSensor
的触发。
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from airflow.sensors.time_sensor import TimesSensor
from datetime import datetime, timedeltadefault_args = {'owner': 'airflow','depends_on_past': False,'start_date': datetime(2023, 1, 1),'retries': 1,'retry_delay': timedelta(minutes=5),
}
dag = DAG('etl_with_timesensor', default_args=default_args, schedule_interval='0 2 * * *')
这里的schedule_interval='0 2 * * *'
表示 DAG 每天在凌晨 2 点(按照 cron 表达式的格式)被调度。但我们还希望在 DAG 内部使用TimesSensor
来更精细地控制任务启动时间。
wait_for_two_am = TimesSensor(task_id='wait_for_two_am',target_time='02:00:00',dag=dag
)
这个TimesSensor
任务(wait_for_two_am
)会等待直到时间到达凌晨 2 点(target_time='02:00:00'
)。
下面定义数据提取任务:
def extract_data():# 这里可以是实际的从数据库或其他数据源提取数据的代码print("Extracting data...")return "extracted_data"
extract_task = PythonOperator(task_id='extract_data',python_callable=extract_data,dag=dag
)
数据转换和加载任务:
def transform_data(data):# 实际的数据转换逻辑,如清洗、聚合等print("Transforming data...")return "transformed_data"
transform_task = PythonOperator(task_id='transform_data',python_callable=transform_data,op_args=[extract_task.output],dag=dag
)
def load_data(data):# 实际的加载数据到目标位置的逻辑,如数据库插入print("Loading data...")
load_task = PythonOperator(task_id='load_data',python_callable=load_data,op_args=[transform_task.output],dag=dag
)
任务之间的依赖关系通过以下方式设置:
wait_for_two_am >> extract_task >> transform_task >> load_task
这意味着extract_data
任务会在wait_for_two_am
任务完成(即到达凌晨 2 点)后才开始执行,然后依次执行transform_data
和load_data
任务。
当 Airflow 调度器启动这个 DAG 时,TimeSensor
首先检查当前时间。如果当前时间还没到凌晨 2 点,它会定期检查(由 Airflow 的内部机制控制检查间隔)。
一旦到达凌晨 2 点,TimesSensor
任务完成,触发extract_data
任务。extract_data
任务提取数据后,将数据传递给transform_data
任务进行转换,转换后的数据再传递给load_data
任务进行加载,从而完成整个 ETL 流程。这种方式确保了 ETL 流程在每天凌晨 2 点准时开始,符合业务对数据提取时间的要求。
自定义TimeSensor行为
TimeSensor提供了几个参数,你可以使用它们来定制它的行为:
- target_time:Sensor定义一天中触发条件为成功的时间(作为datetime.time对象)。
- mode:Sensor的工作模式。默认情况下,它使用“poke”模式,定期检查所需的条件。
- timeout:传感器在失败前等待所需条件满足的最大时间(以秒为单位)。缺省情况下,没有超时。
- poke_interval:检查所需条件的时间间隔(以秒为单位)。默认值是60秒。
最佳实践
-
使用描述性的task_id:为TimeSensor定义清晰和有意义的task_id,以提高dag的可读性和可维护性。
-
设置适当的超时时间:为TimeSensor设置合理的超时时间,以避免任务无限期地等待特定的时间到达。这有助于防止资源耗尽,并确保如果在预期的时间范围内没有满足所需的条件,管道可以正常失败。
-
调整戳间隔:根据您的具体用例自定义poke_interval。如果目标时间很遥远,您可能希望使用更长的时间间隔来避免过多的轮询。相反,如果您希望很快达到目标时间,那么较短的间隔可能更合适。
-
•考虑时区差异:当处理依赖于时间敏感事件或数据的任务时,请确保考虑到Airflow实例和时间敏感数据来源之间的任何时区差异。
总结
Apache Airflow TimeSensor是强大而通用的工具,用于管理数据管道中基于时间的依赖关系。通过了解它的各种用例和参数,你可以创建在特定时间执行任务的高效工作流,或者在继续之前等待一定数量的时间。当你继续使用Apache Airflow时,请记住利用TimeSensor的强大功能,来有效地监控和管理dag中时间驱动的依赖项,并构建健壮的、可扩展的数据管道。
相关文章:
Airflow:TimeSensor感知时间条件
在数据管道工作流中,任务可能需要在特定的时间执行,或者在继续之前等待一定的时间。为了满足这些需求,Apache Airflow提供了TimeSensor,这是一种内置Sensor,可以监控当前时间,并在达到指定时间时触发后续任…...
使用Python和Neo4j驱动程序来实现小规模数据的CSV导入
要将CSV数据导入到Neo4j数据库中,你可以使用Neo4j提供的工具,比如neo4j-admin import命令(适用于大规模数据导入),或者使用Python的Neo4j驱动程序通过Cypher查询逐行插入数据(适用于小规模数据导入…...
网络安全测评技术与标准
网络安全测评概况 网络安全测评是网络信息系统和IT技术产品的安全质量保障。本节主要阐述网络安全测评的概念,给出网络安全测评的发展状况。 18.1.1 网络安全测评概念 网络安全测评是指参照一定的标准规范要求,通过一系列的技术和管理方法,获…...
某漫画网站JS逆向反混淆流程分析
文章目录 1. 写在前面1. 接口分析2. 反混淆分析 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Pyth…...
如何获取文件的MIME类型
文章目录 1. 概念介绍2. 方法与类型2.1 使用方法2.2 常见类型3. 示例代码4. 内容总结我们在上一章回中介绍了"如何加载本地图片"相关的内容,本章回中将介绍如何获取文件类型.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回中提到的文件类型是指MI…...
Three.js 基础概念:构建3D世界的核心要素
文章目录 前言一、场景(Scene)二、相机(Camera)三、渲染器(Renderer)四、物体(Object)五、材质(Material)六、几何体(Geometry)七、光…...
Linux web服务器
Linux 作为 Web 服务器操作系统 安装 Web 服务器软件(以 Apache 为例) 步骤一:更新系统软件包列表 在 CentOS 系统中,使用命令 yum update -y 这个命令会连接到 CentOS 的软件包仓库,检查所有已安装软件包是否有更…...
Linux 下信号的保存和处理
信号的几个状态 信号抵达: 当接收到的信号被处理时, 此时就成为信号的抵达信号的未决: 从信号的产生到信号抵达这个时间段之间, 称为信号未决信号阻塞: 当进程设置了某个信号为阻塞后, 这个进程就不会在接收到这个信号信号忽略: 将信号设置为忽略后, 接收到这个信号, 对这个信…...
宝塔安装教程,bt怎么安装 linux
Centos安装脚本 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh 37a09b35 Ubuntu/Deepin安装脚本 wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo b…...
java通过ocr实现识别pdf中的文字
需求:识别pdf文件中的中文 根据github项目mymonstercat 改造,先将pdf文件转为png文件存于临时文件夹,然后通过RapidOcr转为文字,最后删除临时文件夹 1、引入依赖 <dependency><groupId>org.apache.pdfbox</groupId><artifactId&g…...
基于SpringBoot的养老院管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
阿里云发现后门webshell,怎么处理,怎么解决?
当收到如下阿里云通知邮件时,大部分管理员都会心里一惊吧!出现Webshell,大概是网站被入侵了。 尊敬的 xxxaliyun.com: 云盾云安全中心检测到您的服务器:47.108.x.xx(xx机)出现了紧急安全事件…...
韩顺平老师Linux学习笔记【持续更新...】
1、课程内容 1.1、课程大纲 1.2、Linux使用在哪些地方 Linux运维工程师Linux嵌入式工程师Linux下开发项目:JavaEE、大数据、Python、PHP、C/C、Go 1.3、Linux的应用领域 个人桌面领域服务器领域(最强领域)嵌入式领域 2、Linux入门 2.1、…...
Cognitive architecture 又是个什么东东?
自Langchain: https://blog.langchain.dev/what-is-a-cognitive-architecture/ https://en.wikipedia.org/wiki/Cognitive_architecture 定义 A cognitive architecture refers to both a theory about the structure of the human mind and to a computational…...
【css】浏览器强制设置元素状态(hover|focus……)
直接上步骤: 打开浏览器控制台 → 找到样式选项 → 找到:hov选项 → 点击:hov选项,会展开【设置元素状态】。 只要选中就会展示出自己写在css里面的该种状态下的样式了。...
leetcode热题100——NO.160相交链表——JAVA
一、题目描述 题目:给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后,链表必…...
基于Media+Unity的手部位姿三维位姿估计
使用mediapipe Unity 手部位姿三维位姿估计 参考文章 基于Mediapipe的姿势识别并同步到Unity人体模型中 MediapipeUnity3d实现虚拟手_unity mediapipe-CSDN博客 需求 我的需求就是快速、准确的跟踪手部位姿并实现一个三维显示。 主要思路 搭建mdeiapipe系统,…...
cJson——序列化格式json和protobuf对比
cJson——序列化格式json和protobuf对比 1. 更小的消息体积2. 更快的序列化与反序列化速度3. 类型安全4. 向后和向前兼容性5. 更低的带宽消耗6. 高效的编码方式7. 易于跨语言支持8. 支持复杂的数据结构9. 更好的支持大型数据交换总结 Protocol Buffers (Protobuf) 和 JSON 都是…...
STM32F1学习——ADC模数转换器
一、ADC模数转换器 ADC的全称 Analog-Digital Converter 模拟-数字转换器,他可以用来将引脚上连续变换的模拟电压转换为内存中存储的数字变量。 ADC有两个重要指标,分辨率和频率。 STM32的ADC是 12位 逐次逼近型,1us转换时间,也就…...
2025-1-10-sklearn学习(36、37) 数据集转换-无监督降维+随机投影 沙上并禽池上暝。云破月来花弄影。
文章目录 sklearn学习(36、37) 数据集转换-无监督降维随机投影sklearn学习(36) 数据集转换-无监督降维36.1 PCA: 主成份分析36.2 随机投影36.3 特征聚集 sklearn学习(37) 数据集转换-随机投影37.1 Johnson-Lindenstrauss 辅助定理37.2 高斯随机投影37.3 稀疏随机矩阵 sklearn学…...
Linux之线程池与单例模式
目录 线程池 线程池代码 单例模式 饿汉模式单例模式 懒汉模式单例模式 在前几期,我们已经学习了多线程的创建和控制,学习了多线程中的同步和互斥,学习了多线程中的条件变量和信号量,基于此我们实现了基于阻塞队列和基于环形队…...
LabVIEW调用不定长数组 DLL数组
在使用 LabVIEW 调用 DLL 库函数时,如果函数中的结构体包含不定长数组,直接通过 调用库函数节点(Call Library Function Node) 调用通常会遇到问题。这是因为 LabVIEW 需要与 DLL 中的数据结构完全匹配,而包含不定长数…...
计算机的错误计算(二百零七)
摘要 利用两个数学大模型计算 arccot(0.125664e2)的值,结果保留16位有效数字。 实验表明,它们的输出中分别仅含有3位和1位正确数字。 例1. 计算 arccot(0.125664e2)的值,结果保留16位有效数字。 下面是与一个数学解题器的对话。 以上为与…...
基于 GEE 利用 RF 回归模型实现空间降尺度
目录 1 前言 2 完整代码 3 运行结果 1 前言 本篇讲述在GEE上基于回归模型降尺度,也就是要复现以下论文,该论文发表在J-Star期刊上。 “Ebrahimy H, Aghighi H, Azadbakht M, et al. Downscaling MODIS land surface temperature product using an a…...
Linux 系统下磁盘相关指令:df、du、fdisk、lsblk
文章目录 I df、du、fdisk、lsblk指令df命令用于显示文件系统的磁盘空间使用情况du命令用于估算目录或文件的磁盘空间使用情况fdisk命令用于对磁盘进行分区操作lsblk指令查看设备信息II 应用du估算目录或文件的磁盘空间使用情况lsblk查看服务器上查看硬盘个数III 知识扩展磁盘阵…...
在线或离线llama.cpp安装和模型启动
该版本安装时间是2025-01-10,因为不同版本可能安装上会有所不同,下面也会讲到。 先说下问题——按照官方文档找不到执行命令llama-cli或./llama-cli 先附上llama.cpp的github地址:https://github.com/ggerganov/llama.cpp,build…...
(Arxiv-2023)LORA-FA:针对大型语言模型微调的内存高效低秩自适应
LORA-FA:针对大型语言模型微调的内存高效低秩自适应 paper是香港浸会大学发表在Arxiv 2023的工作 paper title:LORA-FA: MEMORY-EFFICIENT LOW-RANK ADAPTATION FOR LARGE LANGUAGE MODELS FINE-TUNING ABSTRACT 低秩自适应 (LoRA) 方法可以大大减少微调…...
Ubuntu | 系统软件安装系列指导说明
文章目录 Ubuntu 系统软件安装系列指导说明工具系列1. Docker 与 Docker-Compose部署与安装 环境系列1. Golang部署与安装 数据库系列1. PostgreSQL17.2源码部署与安装 Ubuntu 系统软件安装系列指导说明 工具系列 1. Docker 与 Docker-Compose部署与安装 链接 环境系列 1…...
攻防靶场(32):两个爆破技巧 Funbox 7 EasyEnum
目录 攻击路径一 1. 侦查 1.1 收集目标网络信息:IP地址 1.2 主动扫描:扫描IP地址段 1.3 主动扫描:字典扫描 2. 初始访问 2.1 有效帐号:本地账户 3. 权限提升 3.1 滥用特权控制机制:Sudo和Sudo缓存 4. 凭据访问 4.1 凭据…...
Vue3初学之插槽(slot)使用
在 Vue 3 中,插槽(Slots)是一种强大的内容分发机制,允许你在组件中定义可替换的内容区域,从而使组件更加通用和灵活。以下是 Vue 3 中插槽的几种常见用法: 默认插槽 默认插槽是最基本的插槽类型࿰…...
从 0 开始上手 Solana 智能合约
Solana CLI 基础知识 Solana CLI 是一个命令行界面工具,提供了一系列用于与 Solana Cluster 交互的命令。 我们将介绍一些最常见的命令,但你始终可以通过运行 solana --help 查看所有可能的 Solana CLI 命令列表。 Solana CLI 配置 Solana CLI 存储了…...
USB基础 -- USB 控制传输(Control Transfer)的重传机制
USB 控制传输(Control Transfer)的重传机制 1. 控制传输的事务结构 控制传输分为三个阶段,每个阶段都有自己的事务,并可能触发重传机制: 设置阶段(Setup Stage):主机发送 8 字节的…...
创建基本的 Electron 应用项目的详细步骤
创建一个基本的 Electron 应用项目的详细步骤。我们将从安装 Node.js 开始,然后创建项目文件夹并初始化 Electron 项目。 1. 安装 Node.js 首先,确保你已经安装了 Node.js 和 npm。你可以在终端中运行以下命令来检查是否已经安装: node -v…...
《异步编程之美》— 全栈修仙《Java 8 CompletableFuture 对比 ES6 Promise 以及Spring @Async》
哈喽,大家好!在平常开发过程中会遇到许多意想不到的坑,本篇文章就记录在开发过程中遇到一些常见的问题,看了许多博主的异步编程,我只能说一言难尽。本文详细的讲解了异步编程之美,是不可多得的好文…...
Android 修改SVG属性并显示图片(AndroidSvg)
引入依赖: dependencies {implementation com.caverock:androidsvg-aar:1.4 }核心代码: import com.caverock.androidsvg.SVG import org.w3c.dom.Document import java.io.StringWriter import javax.xml.transform.OutputKeys import javax.xml.tran…...
Ubuntu 磁盘修复
Ubuntu 磁盘修复 在 ubuntu 文件系统变成只读模式,该处理呢? 文件系统内部的错误,如索引错误、元数据损坏等,也可能导致系统进入只读状态。磁盘坏道或硬件故障也可能引发文件系统只读的问题。/etc/fstab配置错误,可能…...
移动云自研云原生数据库入围国采!
近日,中央国家机关2024年度事务型数据库软件框架协议联合征集采购项目产品名单正式公布,移动云自主研发的云原生数据库产品顺利入围。这一成就不仅彰显了移动云在数据库领域深耕多年造就的领先技术优势,更标志着国家权威评审机构对移动云在数…...
Java一个简单的反弹动画练习
文章目录 说明代码详解创建窗体代码创建绘图板创建线程 运行结果完整代码 说明 做了一个小球和星型做反弹动画的窗体作为练习,分享给大家,为了方便和我一样的小白可以看的比较明白,所以尽量详细的标注了注释,希望能帮到同样在学习…...
互联网架构变迁:从 TCP/IP “呼叫” 到 NDN “内容分发” 的逐浪之旅
本文将给出关于互联网架构演进的一个不同视角。回顾一下互联网的核心理论基础产生的背景: 左边是典型的集中控制通信网络,很容易被摧毁,而右边的网络则没有单点问题,换句话说它很难被全部摧毁,与此同时,分…...
git push命令
git push 常用命令 1. 拉取远程仓库最新数据 使用 git fetch git fetch作用: 获取远程仓库的最新数据(包括分支、标签等),但不会修改本地工作目录。 结果: 仅更新远程分支(如 origin/main)的…...
day01-HTML-CSS——基础标签样式表格标签表单标签
目录 此篇为简写笔记下端1-3为之前笔记(强迫症、保证文章连续性)完整版笔记代码模仿新浪新闻首页完成审核不通过发不出去HTMLCSS1 HTML1.1 介绍1.1.1 WebStrom中基本配置 1.2 快速入门1.3 基础标签1.3.1 标题标签1.3.2 hr标签1.3.3 字体标签1.3.4 换行标…...
软考信安16~网络安全风险评估技术原理与应用
1、网络安全风险评估概述 1.1、网络安全风险评估概念 网络安全风险评估(简称“网络风险评估")就是指依据有关信息安全技术和管理标准,对网络系统的保密性、完整性、可控性和可用性等安全属性进行科学评价的过程,评估内容涉及网络系统的脆弱性、网络安全威胁以及脆弱性被…...
嵌入式C语言:二维数组
目录 一、二维数组的定义 二、内存布局 2.1. 内存布局特点 2.2. 内存布局示例 2.2.1. 数组元素地址 2.2.2. 内存布局图(简化表示) 2.3. 初始化对内存布局的影响 三、访问二维数组元素 3.1. 常规下标访问方式 3.2. 通过指针访问 3.2.1. 指向数…...
计算机网络期末复习(知识点)
概念题 在实际复习之前,可以看一下这个视频将网络知识串一下,以便更好地复习:【你管这破玩意叫网络?】 网络规模的分类 PAN(个人区域网络):用于个人设备间的连接,如手机与蓝牙耳机…...
LeetCode:3298. 统计重新排列后包含另一个字符串的子字符串数目 II(滑动窗口 Java)
目录 3298. 统计重新排列后包含另一个字符串的子字符串数目 II 题目描述: 实现代码与解析: 滑动窗口 原理思路: 3298. 统计重新排列后包含另一个字符串的子字符串数目 II 题目描述: 给你两个字符串 word1 和 word2 。 如果…...
【SpringAOP】Spring AOP 底层逻辑:切点表达式与原理简明阐述
前言 🌟🌟本期讲解关于spring aop的切面表达式和自身实现原理介绍~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 &am…...
es 3期 第23节-运用Pipeline实现二转聚合统计
#### 1.Elasticsearch是数据库,不是普通的Java应用程序,传统数据库需要的硬件资源同样需要,提升性能最有效的就是升级硬件。 #### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性ÿ…...
T-SQL语言的编程范式
T-SQL编程范式探析 引言 随着信息技术的迅猛发展,数据库在各个行业的应用日益广泛。在众多数据库管理系统中,SQL Server以其高性能和易用性受到广泛欢迎。T-SQL(Transact-SQL)是SQL Server的扩展版本,是一种用于查询…...
【ArcGIS微课1000例】0137:色彩映射表转为RGB全彩模式
本文讲述ArcGIS中,将tif格式的影像数据从色彩映射表转为RGB全彩模式。 参考阅读:【GlobalMapper精品教程】093:将tif影像色彩映射表(调色板)转为RGB全彩模式 文章目录 一、色彩映射表预览二、色彩映射表转为RGB全彩模式一、色彩映射表预览 加载配套数据包中的0137.rar中的…...
论文笔记(六十一)Implicit Behavioral Cloning
Implicit Behavioral Cloning 文章概括摘要1 引言2 背景:隐式模型的训练与推理3 隐式模型与显式模型的有趣属性4 policy学习成果5 理论见解:隐式模型的通用逼近性6 相关工作7 结论 文章概括 引用: inproceedings{florence2022implicit,titl…...