ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Apache Beam 2021 年设计提案索引:52 份 dev 邮件列表文档与它们在仓库中的落地

Apache Beam 2021 年设计提案索引:52 份 dev 邮件列表文档与它们在仓库中的落地 大数据批处理流处理数据工程【免费下载链接】beamApache Beam is a unified programming model for Batch and Streaming data processing.项目地址https://gitcode.com/gh_mirrors/beam4/beam点击查看免费下载本文基于 Apache Beam 仓库中的年度文档索引 2021.md完整收录 2021 年提交给devbeam.apache.org邮件列表的 52 份设计提案作者、主题、UTC 时间并结合 generate_doc_md.py 的生成原理与仓库中的实际实现梳理这些提案如何演化为当前代码库中的真实特性。读完本文你可以掌握这份索引的自动化生成机制、2021 年 Beam 设计工作的完整脉络以及 Splittable DoFn、KafkaIO 动态读、Kafka Streams Runner、RequiresTimeSortedInput等特性对应的源码位置。这份索引是什么2021.md 是contributor-docs/discussion-docs/目录下的年度归档之一标题为 List Of Documents Submitted To devbeam.apache.org In 2021。它用一张四列表格No. / Author / Subject / Date (UTC)记录了当年经由 Beam 开发邮件列表分发的 52 份设计文档、RFC 与讨论材料时间跨度从 2021-01-06 02:17:56 到 2021-12-27 08:28:31均为 UTC。同目录下按年份保存了 2016.md 至 2025.md 共十年的索引格式完全一致。需要说明两点适用前提表格中的 Subject 是生成脚本抓取外部文档页面title得到的个别条目如 JIRA 链接对应的 Issue Navigator - ASF JIRA并非文档本身的人工命名该索引只收录邮件正文中带有 Google Docsdocument/spreadsheets链接或s.apache.org短链接、且成功提取到标题的邮件因此它是一份链接型设计文档清单而非邮件列表的完整存档。2021 年设计提案完整清单以下为 2021.md 中 52 条记录的完整继承主题按原文保留为纯文本No.AuthorSubjectDate (UTC)1Pablo EstradaApache Beam Release Acceptance Criteria - Google Sheets2021-01-06 02:17:562Boyuan ZhangKafkaIO Dynamic Read2021-01-07 23:23:173Mirac Vuslat BasaranApache Beam Resource Annotations2021-01-13 11:26:024Chamikara JayalathIssue Navigator - ASF JIRA2021-01-25 20:20:285Boyuan ZhangPortable OrderedListState2021-02-03 15:33:446Griselda Cuevas[Public PRD] Beam Website 2.02021-02-06 00:12:517Brittany Hermann[Proposal] Digital Beam Summit 20212021-02-11 16:39:478Kenneth KnowlesTriggering is for Sinks2021-02-22 14:51:279Brittany HermannBeam Community Update2021-03-05 15:09:5410Kenneth KnowlesDRAFT - Apache Beam Board Report - March 20212021-03-09 11:50:1511Kenneth KnowlesDRAFT - Apache Beam Board Report - June 20212021-03-11 16:51:1712Tomo SuzukiApache Beam Vendored Dependencies Release Guide2021-03-15 10:17:3713Robert BurkeApache Beam Fn API: Fn State API and Bundle Processing2021-03-30 20:21:4414Kenneth KnowlesCassandra 4.x upgrade2021-04-15 13:28:3815Brian HuletteA Pandas-compatible dataframe API for Beam2021-04-15 17:40:4416Rui WangBEAM-9198 BeamSQL aggregation analytics functionality - Design Doc2021-05-12 14:27:2117Luke CwikParallel querying in JdbcIO2021-06-08 16:21:5118Alexey RomanenkoIssue Navigator - ASF JIRA2021-06-14 07:00:1119Robert BradshawRFC: Apache Beam Go SDK design2021-06-15 14:10:4620Kiley SokPortable MultimapUserState2021-06-28 16:38:1421Kyle WeaverProjection Pushdown in SchemaIO2021-07-12 19:19:4422N/APortable Runner Tests Results2021-07-14 16:27:0323Luke CwikJmsIO auto scaling feature2021-07-19 11:19:1524Chamikara JayalathSplittable DoFn proposal2021-07-25 14:31:5725Pablo EstradaApache Beam Fn Api Overview2021-07-26 07:29:0926Chamikara JayalathA simpler way to define and use Java cross-language transforms2021-07-26 22:09:4427Kyle WeaverProjection Pushdown in Beam Java2021-08-03 17:30:4628Zachary HoufekSBE Beam Extension2021-08-26 11:00:1129Tianyang Hu[Go SDK] SqlTransform API2021-08-30 14:06:0930Lukasz CwikApache Beam Fn API: How to send and receive data2021-08-31 03:51:2331Vachan ShettySupporting BigQuery Storage Read API in the Python SDK2021-09-09 15:54:0332Kenneth KnowlesDRAFT - Apache Beam Board Report - September 20212021-09-10 15:17:4233Chamikara JayalathURN convention for cross-language transforms2021-09-14 18:30:3934Kenneth KnowlesUser Defined Metrics API2021-09-17 11:39:3135Pablo EstradaDefining and documenting key-ordering semantics in Beam runners2021-09-23 19:30:1236Valentyn TymofieievIssues - apache/beam - GitHub2021-09-27 22:44:1637Zachary HoufekSBE Schema in Beam2021-09-28 12:56:5638Jan LukavskyRequiresTimeSortedInput design doc2021-09-29 04:35:4939Heejong LeeArtifact Registration for Java Expansion Service2021-10-06 18:40:1940Ryan ThompsonUpgrading Pickle Library2021-10-12 17:58:5641Ning KangApache Beam JupyterLab Side Panel2021-10-14 14:38:4542Daniel Oliveira[Cross-Language] Java BigQuery IO Externalization2021-10-18 19:25:2243Pablo EstradaImprovements to JdbcIOs readWithPartitions2021-11-01 13:39:5744Brian HuletteApache Beam Vendored Dependencies Release Guide2021-11-01 18:30:3045Yichi Zhang[Proposal] Optional elements embedding in Fn API process bundle request and response2021-11-03 14:00:1046Jack McCluskeyBeam Go MultiMap Side Input Doc2021-11-08 16:58:5947Valentyn TymofieievAutomated generation of requirement files for Python Docker images2021-11-09 16:18:2448Lara SchmidtSchema-Aware Transforms2021-11-09 17:01:1149Valentyn TymofieievPython Tips - Apache Beam - Apache Software Foundation2021-11-16 15:01:3450Brian HuletteBatched DoFns2021-12-15 12:59:2251Chad DombrovaBeam Task Workers2021-12-17 11:57:0352Stuart PerksKafka Streams Runner2021-12-27 08:28:31索引的生成机制generate_doc_md.py这份表格不是人工维护的。同目录下的 generate_doc_md.py 负责从邮件列表归档中自动抽取设计文档链接并生成年度 Markdown 文件其文件头部 docstring 给出的用法是python generate_doc_md.py year脚本的执行链路可以分成四步与源码中的函数一一对应按月下载 mbox 归档。download_mbox() 针对 112 个月逐月构造 Apache 邮件列表归档接口地址lists.apache.org/api/mbox.lua?listdevdomainbeam.apache.orgdyear-month见 第 61 行流式下载为generated/devbeam.apache.org_year-month.mbox抽取文档链接。find_google_docs_links() 遍历 mbox 中的每封邮件multipart 邮件只取第一个部分优先用 extract_google_doc_sheet_link() 中的正则https?://docs\.google\.com/(document|spreadsheets)/d/([a-zA-Z0-9-_])/.*匹配 Google Docs/Sheets 链接匹配不到再退回 extract_s_link() 中的https?://s\.apache\.org/.*短链standardize_url_link() 会把 Google 文档 URL 规范化为不含尾部路径的形式去重与排序。add_message() 按文档 URL 去重同一份文档被多次转发时保留时间戳最早的那封邮件作为记录来源随后 sort_emails_by_timestamp() 按提交时间升序排列。这解释了表中日期是文档首次出现于列表的时间输出 Markdown 表格。convert_to_md_table() 写入 Apache License 头部注释第 285-297 行、年度标题与四列表头并逐行输出| 序号 | 作者 | 标题 | UTC 时间 |。作者名通过 extract_name_re() 从From头的Name email格式含via别名形式正则提取无法解析作者的邮件在表中显示为 N/A对应 2021 年第 22 行。运行前提是该脚本依赖requests、bs4、标准库mailbox等docstring 第 36-38 行有说明且需要网络访问以抓取文档标题——Subject 列的内容正是请求文档页面后解析title并去掉 - Google Docs 后缀得到的第 96 行、第 249 行。因此表格中出现的 Issue Navigator - ASF JIRA、Issues · apache/beam · GitHub 这类主题是 JIRA/GitHub 页面标题而非文档命名。主题聚类2021 年 52 份提案的五大主线可移植性与 Fn API占全年提案密度最高的方向2021 年有至少 10 份提案围绕 Beam 的可移植性体系Fn State API 与 Bundle 处理#13、Fn API 概览#25、数据收发机制#30、key-ordering 语义#35、跨语言 Transform 的 URN 规范#33与更简单的 Java 跨语言 Transform 定义方式#26、Java Expansion Service 制品注册#39、Java BigQuery IO 外部化#42、Fn API bundle 请求/响应内嵌元素#45以及 Portable Runner 测试报告#22。这些提案的落地痕迹可以在当前仓库中直接找到可移植 State 的具体实现位于 harness 层例如 Portable MultimapUserState#20对应 MultimapUserState.javaFn API 的协议定义集中在 model/ 目录下的 protobuf 模型中model/pipeline、model/fn-execution、model/interactive、model/job-management跨语言 Transform 生态则体现在 sdks/java/expansion-service/、sdks/python/expansion-service-container/、由 gen_xlang_wrappers.py 生成 Python 跨语言包装器以及整个 sdks/typescript/ TypeScript SDK——后者本身也是跨语言 Transform 提案长期演进的产物。IO 与连接器增强KafkaIO Dynamic Read#2是 2021 年 1 月 7 日提交的早期提案其目标形态体现在当前的 KafkaIO.java 中KafkaIO.Read支持按ReadMode在动态分配与预分配static两种订阅策略之间切换动态读模式下分区在运行期动态分派给消费者。其余 IO 类提案包括 JdbcIO 并行查询#17与readWithPartitions改进#43、JmsIO 自动伸缩#23、Cassandra 4.x 升级#14、Python SDK 支持 BigQuery Storage Read API#31、SchemaIO 投影下推#21与 Java 侧投影下推#27。JdbcIO 的集成验证入口可见 it/jdbc/ 目录下的集成测试模块。Runner 生态Kafka Streams Runner 的立项全年最后一条记录#522021-12-27是 Stuart Perks 提交的Kafka Streams Runner设计文档。从源码结构看该提案已演化为仓库中的 runners/kafka-streams/ 独立 Runner 模块src/下含 79 个 Java 源文件另有measurement/、job-server/子目录与 runners/flink/、runners/spark/、runners/google-cloud-dataflow-java/ 并列。2021 年 7 月的 Portable Runner Tests Results#22则记录了当时各可移植 Runner 的端口化测试状况是评估 Runner 兼容性的年度快照。DoFn 执行模型的三块拼图2021 年对 DoFn 语义的三次重要扩展如今都已是 Java SDK 的标准能力Splittable DoFn#242021-07-25 提案支持长时间运行元素的可分裂处理模型配套注解与SdfDoFn基础设施位于sdks/java/core的 transforms 包下如SdMapElement等 SDF 注解值得注意的是Splittable DoFn proposal 早在 2020.md 第 16 行2020-02-27就已出现过2021 年属于跨年度持续讨论的长周期设计RequiresTimeSortedInput#382021-09-29 设计文档该注解定义在 DoFn.java 中用于声明 DoFn 依赖按元素时间排序的输入Runner 可据此做有界缓冲等优化Batched DoFns#502021-12-15面向外部系统调用场景的批处理 DoFn 抽象与仓库中GroupIntoBatches等批量抽象属于同一演进线。SQL、DataFrame 与 Go SDK 的多语言布局Brian Hulette 的 A Pandas-compatible dataframe API for Beam#15开启了 Beam 的 DataFrame API 探索当前仓库中 learning/notebooks/interactive-overview/dataframes.ipynb 即为该 API 的交互示例。Go SDK 在 2021 年经历从设计到成型的过程6 月的 Go SDK 设计 RFC#19、8 月的 Go SqlTransform API#29、11 月的 Go MultiMap Side Input 文档#46对应仓库中已相对成熟的 sdks/go/ 目录含pkg/核心实现、examples/、container/等 600 余个源文件。BeamSQL 方向则有聚合分析功能设计#16即 BEAM-9198。社区治理与开发者体验约四分之一条目属于流程与工具类发布验收标准#1与 Vendored 依赖发布指南#12、#44、董事会季度报告#10、#11、#32、Beam Summit 2021#7、Website 2.0 PRD#6、Python Docker 镜像 requirements 文件自动生成#47与 sdks/python/container/ 相关、Pickle 库升级#40、JupyterLab 侧边栏#41、Python 开发 Tips#49已沉淀为仓库内的 python-tips.md、JIRA starter tasks 列表#18与 flaky 测试清单#36。这类条目虽然不直接产出 API但构成了设计文档如 JdbcIO、KafkaIO 提案最终合入前的评审与验收流程。跨年度对照与阅读建议将 2021.md 与 2020.md 对照可以看出 Beam 设计工作的连续性2020 年共 63 份文档其中 Splittable DoFn2020 年第 16 行、Lateness/Panes、User Defined Metrics API2020 年第 59 行2021 年第 34 行再次分发、JupyterLab Side Panel2020 年第 45 行2021 年第 41 行、Website 2.02020 年第 52、61 行2021 年第 6 行等均出现跨年重复分发印证了邮件列表 长周期设计文档的决策节奏。2021 年52 份相较 2020 年63 份总量略降但可移植性、IO 并行化与 Runner 扩展Kafka Streams的比重明显上升。进一步阅读时建议按以下路径在仓库内核验各提案的实现现状可移植状态sdks/java/harness/src/main/java/org/apache/beam/fn/harness/state/IO 模块总览sdks/java/io/、集成测试 it/kafka、jdbc、cassandra、elasticsearch 等子模块Runner 实现runners/ 下的各 Runner 目录Fn API 模型model/更多年份索引contributor-docs/discussion-docs/ 目录。由于原始文档链接指向站外地址本文仅保留标题文本若需核对某份提案的原始全文可依据上表中的序号、作者与日期在邮件列表归档中检索对应的邮件线程。赞分享大数据批处理流处理数据工程【免费下载链接】beamApache Beam is a unified programming model for Batch and Streaming data processing.项目地址https://gitcode.com/gh_mirrors/beam4/beam点击查看免费下载相关推荐Joplin GSoC 2021 提案详解八大开源项目方向与它们在仓库中的落地证据Joplin GSoC 2021 提案详解八大开源项目方向与它们在仓库中的落地证据 本文以 Joplin 官方发布的 Google Summer of Cod知识管理跨平台插件系统Apache Beam 2018 开发者邮件列表讨论文档档案Fn API 可移植性、SplittableDoFn 与 Go SDK 等设计提案回顾Apache Beam 2018 开发者邮件列表讨论文档档案Fn API 可移植性、SplittableDoFn 与 Go SDK 等设计提案回顾 本文基于大数据批处理流处理数据工程设计文档索引在 Agent 优先仓库中沉淀可发现、可追溯的设计史设计文档索引在 Agent 优先仓库中沉淀可发现、可追溯的设计史 导读 本文围绕 learn harness engineering 仓库中 docs/es/上一篇AGGeometryKit完全指南如何用Quadrilaterals实现CALayer的精准角点控制下一篇终极指南KubeSphere节点资源监控与Node Exporter实战详解创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表