用途:让 Airflow 能运行语言 SDK(Java、Go 及未来原生 SDK)任务。Airflow 需要知道两件事:由哪个协调器启动原生子进程,以及哪个队列路由到该协调器。
主要能力与机制:跨语言 SDK 机制相同,仅协调器的 classpath 与 kwargs 不同。两个设置位于 [sdk] 配置段:coordinators(协调器名称到实现类路径与构造 kwargs 的 JSON 对象);queue_to_coordinator(任务队列到协调器名称的 JSON 映射)。任务的 stub 设置 queue="..." 后交给对应协调器,协调器启动原生子进程。协调器名称可自定,但两处须一致,队列名须与 @task.stub 的 queue= 一致。协调器随 Airflow Task SDK(apache-airflow-task-sdk)提供,无需额外 Python 包。
配置方式:可用 airflow.cfg 的 [sdk] 段,或用环境变量 AIRFLOW__SDK__COORDINATORS 与 AIRFLOW__SDK__QUEUE_TO_COORDINATOR(值须为单行 JSON),便于容器、.env、Docker Compose 与 Helm。
前置条件:worker 节点上须存在 SDK 所需运行时或产物,因为每个任务实例会生成原生子进程。Java 需 JRE 17+(java 在 PATH,或设 java_executable);Go 无需语言运行时,但捆绑包须按 worker 的 OS/arch 构建。编译/原生产物须在 worker 上可访问。
JavaCoordinator:classpath 为 airflow.sdk.coordinators.java.JavaCoordinator;jars_root 必填,递归扫描 .jar;java_executable 默认 java;jvm_args 默认空;main_class 默认自动探测,若存在多个可执行 JAR 建议显式指定;task_startup_timeout 默认 10.0 秒。
ExecutableCoordinator(Go 等自包含可执行 SDK):classpath 为 airflow.sdk.coordinators.executable.ExecutableCoordinator;executables_root 必填,按 AFBNDL01 尾部魔数识别捆绑包并校验完整性哈希;task_startup_timeout 默认 10.0 秒。
验证:确认 worker 上运行时/产物可用、kwargs 目录含产物、触发 DAG 并查看原生任务日志。
限制:语言 SDK 处于预览阶段,配置键可能变化。常见故障包括 JSON 无效或队列不匹配、运行时缺失、产物路径或 dag_id 不符、Java 入口点歧义、Go 捆绑包无效或被静默跳过、OS/arch 不匹配导致 exec format error、启动慢需调大超时。相关技能包括 authoring-language-sdk-tasks、authoring-java-sdk-tasks、deploying-java-sdk-bundles、authoring-go-sdk-tasks、deploying-go-sdk-bundles、deploying-airflow。