阿里云 EMR Serverless Spark 落地多 Catalog:一条 Spark SQL 直读直写 MaxCompute、Hologres、StarRocks 与 Paimon;Athena 系统表把查询元数据存成你账户里的 Iceberg,成本分摊与错误归因一条 SQL 到位;dbt 语义层进 Redshift 修非加性指标、Polaris 1.8 给 Ossie 语义模型装上治理端点;AWS 开源 Agentic Data Ingestion:代理写 ETL、双审批门把关
本期聚焦数据平台控制面的开放:阿里云让一个 Spark Session 一次接进 DLF、Hive、MaxCompute、Hologres、StarRocks、Paimon 与 Iceberg 七类 Catalog,跨系统读、join、写收进一条 SQL;Athena 首张系统表 query_executions 以 Iceberg 落在用户自己的 S3 Tables 表桶里,成本分摊、容量判断与错误归因不再需要自建管道;语义层一天两条——dbt Semantic Layer 把非加性指标的 ratio 定义带进 Redshift,Apache Polaris 1.8 的 beta 端点把 Ossie 语义模型纳入 catalog 治理、模型权限与数据权限正交分离;AWS 开源 Agentic Data Ingestion 参考方案,字段映射与代码生成交给基础模型,两道 fail-closed 审批门与有界自愈代理负责兜底。四条合流指向同一件事:元数据、指标定义与管道构建正在变成可编程、可审计的对象。
11月9日(周一)业界出现一轮密集发布:AWS 大数据博客五连发,Dremio 一次性放出四篇 Polaris 与 Ossie 深潜,阿里云大数据博客落地 EMR Serverless Spark 多 Catalog。本期选其中技术含量最高的四条。阿里云把 DLF、Hive Metastore、MaxCompute、Hologres、StarRocks、Paimon、Iceberg 七类 Catalog 接进同一个 Spark Session,跨系统读、join、写收敛成一条 SQL、一个 Spark 作业;Athena 的首张系统表query_executions把每条查询的执行元数据以 Apache Iceberg 落进用户自己账户的 S3 Tables 表桶,成本分摊、容量判断、错误归因从此是普通 SQL 问题;语义层一天两条——dbt Semantic Layer 用 ratio 定义修掉非加性指标的上卷错误($550与$280之差),Apache Polaris1.8用 beta REST 端点把 Ossie 语义模型纳进 catalog 治理,模型权限与 Iceberg 数据权限正交分离;AWS 开源 Agentic Data Ingestion 参考方案,基础模型提字段映射、写 PySpark 转换,两道 fail-closed 审批门加一个有界自愈代理兜底。四条放在一起是一句话:数据平台的元数据、指标定义与管道构建正在变成可编程、可审计的对象。
EMR Serverless Spark 多 Catalog:一条 SQL 吃掉跨系统加工
事件概述
阿里云大数据博客发布《One Spark SQL, Multiple Catalogs: Unified Data Processing with EMR Serverless Spark》(11 月 9 日)。EMR Serverless Spark 的多 Catalog 能力把 DLF、Hive Metastore、MaxCompute、Hologres、StarRocks、Paimon、Iceberg 以及自定义 Catalog 接进同一个 Spark Session,跨系统的读、join、写收敛进一条 Spark SQL,由一个 Spark 作业完成。
文章从一个真实场景开篇:数据团队每天要出一份用户运营报表,订单明细在数仓、会员等级在在线分析库,过去跨系统加工意味着多套连接配置、为搬数建中转表、再用几个相互依赖的任务把管道串起来——麻烦出现在 SQL 跑起来之前。多 Catalog 把这些数据空间带进同一个 Session,订单表、维表、结果表直接出现在同一条 SQL 里。
技术解析
- 表名格式:表引用统一为
<catalog>.<database>.<table>。新 Catalog 扩展的是 Spark 的数据面,既有业务 SQL 原样保留;一张 Session 里可以并列出现odps.retail_dw.dwd_order_di、holo_realtime.public.dim_user_level、paimon_curated.ads.user_pay_detail这样的三段名。 - 支持范围:DLF Catalog(含 Paimon、Iceberg 表)、Hive Metastore Catalog(保留原元数据体系)、MaxCompute Catalog(内置 MaxCompute DataSource V2)、Hologres Catalog(三段名直读直写)、StarRocks Catalog、Paimon Catalog(元数据托管 DLF/HMS/文件系统,一个 Session 可挂多个)、Iceberg Catalog(走 DLF 或 HMS,也可独立)、Custom Catalog(基于 Spark CatalogPlugin 机制扩展自有元数据系统)。
- 连接一次、全工作区复用:workspace 的 Data Catalog 是统一入口,连接地址、网络与认证信息由平台集中管理,业务代码只引用稳定的逻辑表名。Data Catalog 暂不支持的类型用
spark.sql.catalog配置自行注入;Paimon、Iceberg 等湖格式能力内置,跳过找包、打包、上传 JAR 与解 ClassPath 冲突的流程。 - 统一执行计划:来自不同 Catalog 的表进入同一个 Spark 逻辑计划,由 Spark 统一安排数据扫描、谓词下推、分区裁剪、join 与 shuffle,结果直接写目标 Catalog。示例里 MaxCompute 订单表 LEFT JOIN Hologres 会员维表、结果写 Paimon 表,整条管道提交一个 Spark 作业,中间没有同步表与搬数脚本。
- 迁移弹性:维表迁去 StarRocks、HMS 或 DLF 时只换全限定表名,业务逻辑不动;目标表也可以换成 DLF 管理的 Paimon 或 Iceberg 表,读写算仍归 Spark。
行业影响
这是湖仓一体之后对「多引擎共存」现实的务实回答:不强迫数据搬家、不重写业务 SQL,把联邦计算下推给统一的 Spark 计算面。对阿里云生态内的用户,数仓(MaxCompute)、实时仓(Hologres)、OLAP(StarRocks)与湖格式(Paimon、Iceberg)的边界在计算层被抹平,DWD 到 ADS 的跨库管道从任务链变回一条 SQL。对行业,这条路线与各家「catalog 联邦 + 统一引擎」的做法互为印证——当 catalog 成为平台的标准供给物,引擎间的数据搬运就从用户的待办清单里消失了。
相关链接
Athena 系统表:查询引擎把可观测性落成你账户里的 Iceberg
事件概述
AWS 大数据博客发布《Amazon Athena introduces system tables for query execution observability》(11 月 9 日)。Athena 推出系统表,首张表为 query_executions:每条完成的查询一行元数据,以 Apache Iceberg 表的形式存进用户自己账户的 S3 Tables 表桶,查询完成几分钟内即可查询,不需要自建任何 ETL 管道。
过去做 Athena 的使用分析要靠 CloudTrail 事件或自建日志管道,聚合指标也分不清失败查询里哪些是用户语法错误、哪些是系统问题。系统表把这些问题的答案变成普通 SQL:用量分析、成本分摊、性能趋势、审计与容量优化,一条查询一种。
技术解析
- 存储与所有权:数据落在账户内的服务托管 S3 表桶(仅 Athena 服务可写入),默认 SSE-S3,可换用户自己的 KMS 密钥;账户内任何 IAM 主体都无法修改或删除单条记录。schema 定义、分区、compaction、快照管理与数据过期由 S3 Tables 自动维护;保留期经 record expiration 配置,最短
1天、无上限。表引用路径为"s3tablescatalog/aws-athena"."metadata"."query_executions"。 - 字段面:查询标识(
query_execution_id、query_string、submission_date_time)、上下文(work_group_name、catalog、database、tables_accessed)、身份(principal_arn)、性能(total_execution_duration、planning time、query_queue_time_duration)、资源(data_scanned_size、容量预留查询的dpu_count)、结果(state_enum、error_category_enum、error_message)。 - 典型查询:按工作组或
principal_arn汇总data_scanned_size做成本分摊;用APPROX_PERCENTILE看执行时长 p50/p95 与排队时长的周环比判断容量压力;CROSS JOIN UNNEST(tables_accessed)做按表审计;COUNT(*) FILTER (WHERE state_enum = 'FAILED' AND error_category_enum = 1/2)把系统错误与用户错误分开——这是聚合的 CloudWatch 指标做不到的。 - 容量预留判断:
dpu_count乘以执行时长折算 DPU-hours,用来判断预留容量是否偏大偏小、按需负载该不该转预留。 - 开放互操作与代理集成:Iceberg 格式意味着 Athena、DuckDB、Redshift、EMR、Spark、Trino 都能查这张表;它已在 AWS Glue Data Catalog 注册,QuickSight 等 BI 工具可直接接。配套路径有两条:经 AWS MCP Server 让 MCP 兼容的 AI 代理用自然语言查元数据;AWS Agent Toolkit 提供开源的 Athena system tables Agent Skill,内含 schema、示例查询库与最佳实践,建议给代理最小只读 IAM,API 调用全部进 CloudTrail。
行业影响
「元数据也是数据」这句话有了新的实例:查询引擎把自身的可观测性产物落成用户账户里的开放表格式,观测数据从专有 API 与日志管道里解放出来,进湖仓分析的常规工具链。这延续了 AWS 用 S3 Tables 承载 Iceberg 的路线——引擎的运行痕迹与业务数据同等待遇:可联邦、可加密、可审计。对正在给数据代理配权限的团队,这张表还自带一层价值:代理自己跑了多少查询、扫了多少数据、错了几次,都能用 SQL 回答。
相关链接
语义层进治理面:dbt 语义层落 Redshift,Polaris 1.8 纳管 Ossie 模型
事件概述
11 月 9 日语义层出现两条动态。AWS 大数据博客发文《Define metrics once and keep them correct with the dbt Semantic Layer on Amazon Redshift》:Redshift 没有原生语义层,文章用非加性指标的经典错误演示开源 dbt Semantic Layer(MetricFlow)如何让指标定义一次、任意粒度正确。Dremio 发布《Governing Apache Ossie Semantic Models in Apache Polaris》:Apache Polaris 1.8 交付 beta 语义模型 REST 端点,把 Ossie 语义模型当作 catalog 资源纳管——存储与版本化之外,补上「谁能写、谁能审、谁能发」的细粒度控制。Ossie 是 ASF 孵化中的开源语义建模项目,面向 SQL 优先分析,跨引擎标准化业务指标、模型级血缘与可复用语义实体。
技术解析
- 非加性陷阱与表爆炸:预聚合表固定在一个粒度上,允许用户按
n个维度任意切片就需要2^n张表(7个维度即128张),现实中没人这么做,只能收到工单再建表。更隐蔽的是非加性指标:示例里周一1笔$1,000订单、周二4笔各$100,日粒度 AOV 各自正确,BI 工具上卷到周直接平均得$550(错),正确答案是SUM(revenue) / COUNT(orders)=$1,400 / 5=$280。错误值看起来合理,最难发现;转换率、利润率、CPA、distinct count 同病。 - MetricFlow 的做法:指标定义放进 dbt 项目的版本控制 YAML——
average_order_value定义为 ratio 类型(分子total_revenue、分母order_count),查询时按请求粒度重新生成正确的 SQL,而不是平均预聚合值。mf query --metrics average_order_value --group-by metric_time__week从按天的1000/100换到按周只改一个词,结果仍是280;mf query --explain输出生成的 SQL,交给任意工具、调度器或物化回 Redshift 的 dbt 模型。环境用dbt-redshift==1.9.5与dbt-metricflow==0.11.0,配套仓库aws-samples/sample-dbt-semantic-layer-on-amazon-redshift含 CDK 部署与端到端测试。开源 dbt Core 路线下,无原生连接器的工具(如 QuickSight)读semantic_manifest.json或读物化表;Tableau/Power BI 用的托管 Semantic Layer API 需要 dbt Cloud,YAML 定义两边相同。 - Polaris
1.8治理端点:语义模型成为与 dataset、credentials、roles 并列的 catalog 资源类型,走 Polaris 既有 RBAC 框架,权限作用域收窄到最贴近团队的 catalog 或 namespace。端点默认关闭、显式 beta,客户端要容忍 API 演进。关键设计是权限正交:模型权限不授予数据访问——作者没有目标表的数据集级权限就发不了生产模型,语义模型权限与 Iceberg 数据面权限分离,减小爆炸半径。 - 三段发布工作流:author(草稿可引用数据集但不自动获得数据权限)→ review(校验 SQL 兼容性、引用数据集存在性、跑样例查询)→ publish(需要目标作用域的显式 publish 权限,发布前断言数据集 ACL)。推荐在 CI 里跑 create/read/update/delete 的兼容性测试,把 beta API 当契约管。
行业影响
上一期 GCP 把六种语义方言收进同一张上下文图,是索引层的统一;这一期两条动态是权限层的分离——指标的写作者、审核者、发布者与底层数据的读者被拆成不同权限面。语义层的竞争从「谁的定义语言赢」推进到「定义怎么被治理」:定义进版本控制、模型进 catalog RBAC、发布进审批流。落地时最先要做的两个决策也被点明:发布权集中还是下放,数据权限在 CI 里断言还是在发布时断言。Redshift 用户侧的信号同样直接——什么时候该上语义层有了明确触发条件:指标需要按无法预先枚举的维度组合切片,且包含非加性度量。
相关链接
- Define metrics once and keep them correct with the dbt Semantic Layer on Amazon Redshift
- aws-samples/sample-dbt-semantic-layer-on-amazon-redshift
- Governing Apache Ossie Semantic Models in Apache Polaris: APIs, Privileges, and Scope
- Apache Ossie
- Apache Polaris
Agentic Data Ingestion 开源:代理写 ETL,fail-closed 审批门把关
事件概述
AWS 大数据博客发布《Automate ETL pipeline creation with Amazon Bedrock AgentCore and AWS Glue》(11 月 9 日),开源参考方案 Agentic Data Ingestion。对准一个文件或数据库表,基础模型提出字段映射、生成 PySpark 转换代码,代码先在 Spark 上测试,通过后部署成 AWS Glue 作业;映射与代码测试两步设人工审批门。
方案瞄准的是小到不值得立项的数据源:仪器导出、合作方 CSV、零散库表——过去每个源都要工程师花数天映射、编码、测试、开通,schema 一变推倒重来。官方给出的运行成本:样例规模一次 run 约 $0.10–0.25,闲置部署约 $15–20/月。
技术解析
- 十步工作流:文件校验 → schema 提取 → schema 比对(漂移检测)→ schema 映射(基础模型打置信度分,审批门)→ 代码生成(PySpark 转换 + 数据质量规则)→ 代码测试(Spark 上实跑,审批门,测试连续失败强制转人审)→ 基础设施开通 → Glue 作业创建 → 质量规则登记 → 运行。上传经 EventBridge 与 SQS 触发 Lambda,Step Functions 编排十步;代理用开源 Strands Agents SDK 构建、跑在 Bedrock AgentCore 上,模型是 Bedrock 的 Claude Sonnet
4.6,整套用 CDK 部署。 - 审批门 fail-closed:判断不了是否需要审核就等人来批;在门上等
72小时自动失败;批准与拒绝都记录审核人身份。映射免审的条件是每个字段对都高置信且被名字匹配佐证,复用过的映射默认送审。 - 两个辅助代理:映射置信度低时,complex-mapping agent 往审核界面补样例值与具体问题;Glue 作业失败时,self-healing agent 最多启一次新 run——schema 或类型错误重新生成代码,内存溢出换更大 worker。重试有明确的不重试条件:失败作业已经写过数据、重试会重复写入,或者错误出在权限等重试解决不了的问题,则保持失败并把诊断留在详情页。
- 源与目标:源支持 CSV(含 TSV、管道分隔)、JSON、Parquet、Avro、ORC、Excel,以及 JDBC(PostgreSQL、Aurora、MySQL、MariaDB、Oracle、SQL Server),增量按时间戳或数字水位列只读新行;目标支持 S3 Tables(Iceberg,append/overwrite/merge 三种写法,Athena/EMR/Redshift 可直接查)、JDBC 库(凭据运行时走 Secrets Manager)、自管桶里的分区 Parquet。数据质量规则来自获批的映射、在作业内执行,失败行先隔离再写,对 S3 Tables 目标默认开启。
行业影响
agent 写 ETL 的争议一直在于对错难辨,这个方案把答案落在流程而不是模型上:映射假设与生成的代码都在审批门上暴露给人,重试有明确的不重试条件防重复写入。AWS 自述模型会挑出「技术上合理、业务上错」的映射——这正是人审存在的理由,也是这份方案里最值得抄走的设计。对做数据平台的团队,借鉴对象不是代理本身,而是「fail-closed 审批 + 有界自愈 + 审核留痕」这套治理壳:它不绑定 AgentCore,迁移到自家编排引擎上并不难。
相关链接
编者评
四条动态分布在数据链路的不同位置,指向同一件事:数据基础设施正在把控制面开放成可编程对象。阿里云把联邦计算的元数据面统一进 workspace 的 Data Catalog;Athena 把引擎自身的观测元数据落成用户账户里的开放表格式;语义层的两条动态把指标定义从应用层收进治理面——版本控制 YAML 与 catalog RBAC;Agentic Data Ingestion 把管道构建的每个判断点交给人审门。上一期 GCP 的动作是把 AI 能力铺进 pandas 与聊天界面,这一期 AWS、Dremio、阿里云的动作是把权限、审计、观测这些「基础设施的基础设施」做成开放格式与标准 API——当数据代理越来越多地直接读写数据平台,平台竞争的重心正从吞吐与压缩率挪向三个问题:元数据是不是开放格式、权限是不是正交可组、代理的操作是不是可审计。周一这轮密集发布里还有几条收进注脚:Workday Data Cloud 与 AWS 做双向零拷贝集成,治理过的人事与财务数据直接进 SageMaker Unified Studio 与 Glue;CUDOS 5.10 面板新增 Redshift RA3 到 RG 的现代化追踪;Dremio 同日发布的其余三篇 Polaris 运维深潜(Admin Tool、MongoDB 持久化、Iceberg 原子 CTAS/RTAS)覆盖了 Polaris 落地的运维缝隙;Anyscale 发了 Lila Sciences 用 Ray 把 GLM-5.3-Flash 训练扩到 1M tokens 上下文的复盘,训练侧的规模故事继续推进。数据基建这边的叙事则越来越清楚:下一轮拼的是治理与观测的可编程性。