
大数据批处理流处理数据工程【免费下载链接】beamApache Beam is a unified programming model for Batch and Streaming data processing.项目地址https://gitcode.com/gh_mirrors/beam4/beam点击查看免费下载Apache Beam Playground 是 Apache Beam 官方提供的交互式在线运行环境让开发者无需安装任何 Beam 依赖即可在浏览器中直接浏览、修改并运行 Beam 的 Transform 示例与自建 Pipeline。本文以仓库中的官方博客 ApachePlayground.md 为骨架结合 playground 目录下的后端、前端、基础设施源码与运维文档完整讲解 Playground 的功能特性、示例目录机制、执行架构、本地运行方式以及如何向 Catalog 提交你自己的示例。什么是 Apache Beam PlaygroundApache Beam 是一个统一的批处理与流处理编程模型但其 SDK 环境的安装、配置JDK、Python 虚拟环境、Go 模块等常常是初学者上手的第一道门槛。Apache Beam Playground 正是为解决这一问题而设计的交互式在线环境你不需要安装或搭建任何 Beam 环境就可以直接尝试 Beam 的各种 Transform 与官方示例。从源码角度可以更精确地理解它的定位仓库根目录下的 playground/README.md 将其定义为 “a web application to run Beam code snippets in a modern browser”一个在现代浏览器中运行 Beam 代码片段的 Web 应用。它由两部分组成前端Frontend基于 Flutter/Dart 构建的浏览器界面负责示例浏览、代码编辑与结果展示源码位于 playground/frontend后端Backend基于 Go 构建的 gRPC 服务负责接收代码、调度执行、缓存结果与数据持久化源码位于 playground/backend。官方博客将 Playground 定位为 Beam 社区帮助潜在用户“快速看到并运行 Beam Pipeline 示例”的入口其设计目标可以概括为无需 setup、即开即用。Playground 核心特性总览原博客 ApachePlayground.md 列出了 Playground 的六大核心能力它们是理解整个项目的钥匙可发现的示例目录Catalog无需自己写代码直接通过浏览或搜索 Catalog 找到可以立刻运行的 Transform 示例。Catalog 的内容直接来自 Apache Beam 仓库本身多 SDK 支持支持Java、Python、Go三大官方 SDK以及基于 Scala 的ScioSDK统一在 Beam Direct Runner 上执行示例Pipeline 执行图DAG展示运行后可视化展示 Beam 的 Pipeline 执行有向无环图代码编辑器可以直接修改示例代码也可以粘贴/编写你自己的自定义 Pipeline 并在 Direct Runner 上运行完善的编辑器体验支持代码高亮、灵活布局、配色方案切换等特性为桌面浏览器提供响应式交互体验网页嵌入Embedding能力可以将某个 Playground 示例嵌入到任意网页中网页读者无需跳转即可直接运行该示例 Pipeline。第 6 点在仓库中有直接的落地证据官方入门页 try-beam-playground.md 使用 Hugo shortcode{{ playground }}和{{ playground_snippet }}将 Java、Python、Go、Scio 四种语言的 WordCount 示例直接嵌入页面读者在官网阅读文档时就能一键运行示例。支持的 SDK 与默认示例Playground 按 SDK 划分后端执行单元每种 SDK 都有对应的容器化运行环境。不同 SDK 的默认示例default-example定义在 playground/sdks.yaml 中SDK默认示例SDK_GOMinimalWordCountSDK_JAVAMinimalWordCountSDK_PYTHONWordCountWithMetricsSDK_SCIOMinimalWordCount这些默认示例会在后端应用启动时被读取并写入 Cloud Datastore作为用户打开 Playground 时的初始示例。同一个入口页 try-beam-playground.md 中对应的playground_snippet标识如SDK_JAVA_MinimalWordCount、SDK_PYTHON_WordCountWithMetrics、SDK_GO_MinimalWordCount、SDK_SCIO_MinimalWordCount与上述配置一一对应。后端在启动时通过BEAM_SDK环境变量指定自身服务哪种 SDK可选值包括SDK_UNSPECIFIED、SDK_JAVA、SDK_PYTHON、SDK_GO、SDK_SCIO见 playground/backend/README.md。每种 SDK 的容器Java、Python、Go、Scio、Router都位于 playground/backend/containers 目录其中 Router 负责把前端请求按 SDK 路由到对应的 Runner 服务。示例从哪里来Catalog 的数据源Playground 的示例 Catalog 并非凭空生成而是通过 CI/CD 脚本从 Beam 仓库本身装载而来。根据 playground/README.md 的 “Project structure” 表格以下仓库目录是 Playground 的示例来源仓库目录在 Playground 中的用途examplesJava SDK 示例代码装载进主 Cataloglearning/beamdoc不应出现在主 Playground Catalog 中的示例learning/katas小型代码练习Katas装载进主 CatalogsdksGo 与 Python SDK 的示例来源负责装载工作的脚本是 playground/infrastructure/ci_cd.py它同时承担 CI校验所有示例与 CD保存所有示例及其运行输出到 Cloud Datastore两个步骤。典型的装载命令来自 playground/README.mdexport BEAM_ROOT_DIR$(realpath ../../) export SDK_CONFIG../../playground/sdks.yaml export BEAM_EXAMPLE_CATEGORIES../categories.yaml export BEAM_USE_WEBGRPCyes export BEAM_CONCURRENCY4 export DATASTORE_EMULATOR_HOSTlocalhost:8081 export SERVER_ADDRESSrunner_address # 对应 SDK 的 runner 地址 python ci_cd.py --step CD \ --sdk SDK \ # SDK_GO / SDK_JAVA / SDK_PYTHON / SDK_SCIO --namespace Playground \ --datastore-project test \ --origin PG_EXAMPLES \ --subdirs $BEAM_ROOT_DIR/sdks $BEAM_ROOT_DIR/examples $BEAM_ROOT_DIR/learning/katas在本地部署场景下各 SDK Runner 的默认地址为Golocalhost:8084、Javalocalhost:8086、Pythonlocalhost:8088、Sciolocalhost:8090。需要特别说明的是 Scio由于 Scio 示例并未提交到 Beam 源码树中装载前需先用 playground/infrastructure/fetch_scala_examples.py 从上游仓库拉取例如python fetch_scala_examples.py --output-dir /tmp/scio-examples python ci_cd.py --step CD --sdk SDK_SCIO --namespace Playground \ --datastore-project test --origin PG_EXAMPLES \ --subdirs /tmp/scio-examples关于ci_cd.py的完整参数--step、--namespace、--datastore-project、--sdk、--origin、--subdirs等可参考 playground/TASKS.md 中的 “Manual Example deployment” 一节。编辑与执行体验编辑器、DAG 图与嵌入代码编辑器Playground 的核心交互载体是浏览器内的代码编辑器具备代码高亮、灵活布局、配色方案切换等能力针对桌面浏览器做了响应式优化。你可以直接修改 Catalog 中的示例代码也可以编写自己的自定义 Pipeline——两者都会在Beam Direct Runner上执行因此非常适合快速验证 Beam 的编程模型与 API 用法而无需为某个分布式 Runner如 Dataflow、Flink、Spark准备集群环境。Pipeline 执行图DAG运行示例后Playground 会展示 Beam Pipeline 的执行图DAG。这背后对应 Beam 统一的编程模型Pipeline 由多个 PTransform 组合而成数据在 PCollection 之间流转。Playground 将这一执行计划可视化帮助用户在动手写代码前直观理解数据变换的流向。嵌入示例到自己的网页Playground 支持两种对外分发方式链接分享生成指向某个示例的 Playground 链接读者点击即可加载该示例网页嵌入将示例直接嵌入网页读者在页面内即可运行。仓库内的官网页面 try-beam-playground.md 就是嵌入能力的官方范例——它通过 shortcode 嵌入了四种 SDK 的 WordCount 示例并设置了height700px的展示高度。如果你要在 Beam 官网之外嵌入示例可以阅读 playground/load_your_code.md 的 “Embedding a snippet into HTML” 章节向 Playground 添加示例含元数据、命名代码段、链接与嵌入的完整三步流程也记录在这份文档中。深入后端Playground 的执行架构一次 RunCode 请求的旅程playground/backend/README.md 给出了后端处理 Beam 代码执行的完整流程RunCode 流程可以概括为接收请求前端通过 gRPC或 grpc-Web将用户代码与参数发送给后端校验与准备Validators/Preparators后端对代码进行校验例如检查文件大小、语法可编译性并针对不同 SDK 准备运行环境调度执行后端将代码交给对应 SDK 的 Runner 容器使用 Beam Direct Runner 执行结果收集与缓存运行输出被收集、写入 Cloud Datastore同时以 RedisCACHE_TYPEremote或本地内存CACHE_TYPElocal作为缓存层加速重复运行返回前端执行状态与输出流通过 gRPC 流式回传前端实时渲染。验证器/预处理器与代码的关系结构可参考后端目录中的架构图 ValidatorsPreparators.png它清晰地标注了不同 SDK 代码在进入执行前分别经过哪些校验与准备步骤。后端关键配置与环境变量后端服务是纯 Go 实现支持本地直接运行或 Docker 容器运行。部署和调试需要关注的环境变量详见 playground/backend/README.md环境变量含义默认值BEAM_SDK后端负责处理的 SDK 类型必填APP_WORK_DIR处理代码请求的工作目录必填PREPARED_MOD_DIR预生成 go.mod/go.sum 的目录仅 Go SDK—SERVER_IP/SERVER_PORT后端监听地址与端口localhost/8080CACHE_TYPE缓存类型local或remoteRedislocalCACHE_ADDRESSRedis 地址仅CACHE_TYPEremote时使用localhost:6379BEAM_PATHJava SDK 所需 jar 包路径/opt/apache/beam/jars/*KEY_EXPIRATION_TIME缓存键过期时间15 minPIPELINE_EXPIRATION_TIMEOUT代码处理过期时间15 minPROTOCOL_TYPE后端协议类型TCP或HTTPHTTPNUM_PARALLEL_JOBS可并行处理的代码请求数用于健康检查与负载均衡20LAUNCH_SITE日志配置App Engine 部署时设为app_enginelocalSDK_CONFIGSDK 与默认示例配置文件路径../sdks.yamlDATASTORE_EMULATOR_HOSTCloud Datastore Emulator 地址本地开发用—PROPERTY_PATH应用属性文件路径.CACHE_REQUEST_TIMEOUT缓存请求超时5 sec此外playground/backend/properties.yaml 中还有一组应用属性playground_salt生成哈希的盐、max_snippet_size单段代码内容大小上限约 100 万字符、id_lengthDatastore 存储标识的长度兼顾存储开销与随机性、removing_unused_snippets_cron定时清理过期代码片段的 cron 表达式。本地运行后端不使用 Docker 时可按如下步骤在开发机上直接启动后端见 playground/backend/README.md# 1. 在 Beam 源码树之外准备工作目录并拷贝运行所需资源 mkdir ~/path/to/workdir cp -r {logging.properties,datasets/,configs/} ~/path/to/workdir # 2.仅 Go SDK 需要准备预生成的模块目录 export PREPARED_MOD_DIR~/path/to/workdir/prepared_folder SDK_TAG2.44.0 bash ./containers/go/setup_sdk.sh $PREPARED_MOD_DIR # 3. 启动后端 SERVER_PORTport \ BEAM_SDKbeam_sdk_type \ APP_WORK_DIRpath_to_workdir \ DATASTORE_EMULATOR_HOST127.0.0.1:8888 \ DATASTORE_PROJECT_IDtest \ SDK_CONFIG../sdks-emulator.yaml \ go run ./cmd/server运行测试与构建发布版分别使用go test ./... -v和go build ./cmd/server/server.go。若要自定义客户端与后端通信可依据 playground/api/v1/api.proto 生成各语言的 gRPC 模型与客户端代码。一键本地部署Docker Compose 与 GradlePlayground 提供了基于 Docker Compose 的一键本地部署方式便于前端团队在本地联调。相关 Gradle 任务定义在 playground/TASKS.md 中# 启动Router 各 SDK Runner 前端 ./gradlew playground:dockerComposeLocalUp # 停止 ./gradlew playground:dockerComposeLocalDown注意事项来自 playground/TASKS.md完整启动可能耗时约 30 分钟且对资源要求较高建议只启用你需要的那个 SDK 的 Runner如不需要某些 Runner可注释掉 playground/build.gradle.kts 中dockerComposeLocalUp任务对它们的依赖以及 playground/docker-compose.local.yaml 中对应的镜像配置前端需要访问本地后端时取消 playground/frontend/playground_components/lib/src/constants/backend_urls.dart 中 “Uncomment the following lines to use local backend.” 注释即可。开发环境的完整依赖清单Go 1.23、Flutter、protoc、buf、Docker、Docker Compose、gcloud CLI、Cloud Datastore Emulator、sbt、Python 3.8 等见 playground/README.md 的 “Setup development prerequisites”。常用任务还包括./gradlew playgroundPrecommit # Playground 提交前整体检查 ./gradlew playground:tasks # 查看所有可用 Gradle 任务 ./gradlew playground:generateProto # 重新生成 protobuf ./gradlew playground:backend:removeUnusedSnippet -DdayDiff{int} -DprojectId{string} -Dnamespace{ns} # 清理过期片段 ./gradlew playground:backend:removeSnippet -DsnippetId{string} -DprojectId{string} -Dnamespace{ns} # 删除指定片段如何向 Catalog 添加你自己的示例将一个新的示例、代码片段或学习单元加入 Playground是一个三步流程详见 playground/load_your_code.md准备代码片段片段必须是可直接运行的完整代码Playground 使用 Direct Runner 执行由于 Playground 出于安全考虑限制代码访问互联网数据源与依赖需要遵循文档给出的推荐方式还可以通过“命名代码段Named Sections”机制标注需要强调的代码区域支持只读、折叠、隐藏等视图模式将片段加入 Beam 仓库或 Playground包括为示例添加元数据描述、分类、标签、运行参数等、提交 PR、等待 CI 装载后记录片段 ID若示例依赖 Kafka还需要在 playground/kafka-emulator 提供的 Kafka 模拟器环境中验证创建链接或嵌入页面为片段生成 Playground 链接或将其嵌入 HTML / Beam 官网页面。未列入主 Catalog 的示例、Tour of Beam 学习单元以及从 GitHub 或任意 HTTPS URL 加载代码的方式在 playground/load_your_code.md 中均有对应章节说明。生产部署Playground 的生产部署面向 Google Cloud Platform使用 Terraform 管理全部基础设施负载均衡、Cloud Run/容器、Cloud Datastore、CloudBuild 触发器、Kubernetes 等部署指南见 playground/terraform/README.mdTerraform 配置位于 playground/terraformCloudBuild 的 CI/CD 流程示例校验与装载位于 playground/infrastructure/cloudbuild。后端代码的贡献规范见 playground/backend/CONTRIBUTE.md前端见 playground/frontend/CONTRIBUTE.md。下一步立刻上手与参与社区立刻体验打开在线 Playground 站点从目录中挑选一个示例运行或直接修改官方入门页 try-beam-playground.md 中嵌入的 WordCount 示例反馈问题通过 Playground 界面中的 “Enjoying Playground?” 入口提交反馈加入社区订阅 Beam users 邮件列表参与 Apache Beam 社区讨论贡献代码按照 CONTRIBUTING.md 的指引从后端或前端代码库入手向 Playground 提交你的第一个示例或改进。无论是想快速验证 Beam 编程模型、教学演示还是评估 Beam 是否适合你的批处理/流处理场景Apache Beam Playground 都是最轻量的起点——这也是它作为官方 “Try Beam” 入口存在的意义。赞分享大数据批处理流处理数据工程【免费下载链接】beamApache Beam is a unified programming model for Batch and Streaming data processing.项目地址https://gitcode.com/gh_mirrors/beam4/beam点击查看免费下载相关推荐Apache Beam Kotlin Katas 实战指南用 JetBrains 教育环境交互式学习 Beam 编程模型Apache Beam Kotlin Katas 实战指南用 JetBrains 教育环境交互式学习 Beam 编程模型 Apache Beam 是统一批处理大数据批处理流处理数据工程Apache Beam Playground 完全指南本地搭建、示例发布与自定义示例接入Apache Beam Playground 完全指南本地搭建、示例发布与自定义示例接入 Beam Playground 是 Apache Beam 官方提供大数据批处理流处理数据工程Apache Beam Python SDK Notebook 环境搭建指南安装 apache-beam 与代码单元运行全解析Apache Beam Python SDK Notebook 环境搭建指南安装 apache beam 与代码单元运行全解析 Apache Beam 在官方大数据批处理流处理数据工程上一篇探索Devicetree规范开源硬件描述的强大工具下一篇vedo 项目教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考