SuperAPI AI 工具集

java-development

编程与开发

查看项目

更新于 10-16 12:54

技能介绍

用途

本技能用于指导 Apache Beam 项目中的 Java SDK 开发工作,包括构建、测试、运行示例以及理解项目结构。适合在 Apache Beam 代码库中编写或调试 Java 代码、运行测试、构建容器和 Worker 包时使用。

项目结构

关键目录包括:

  • sdks/java/core:核心 Java SDK(PCollection、PTransform、Pipeline)
  • sdks/java/harness:SDK harness(容器入口点)
  • sdks/java/io/:I/O 连接器(51+ 连接器,包括 BigQuery、Kafka、JDBC 等)
  • sdks/java/extensions/:扩展(SQL、ML、protobuf 等)
  • runners/:Runner 实现,包括 runners/direct-java(Direct Runner,本地执行)、runners/flink/(Flink Runner)、runners/spark/(Spark Runner)、runners/google-cloud-dataflow-java/(Dataflow Runner)
  • examples/java/:Java 示例,包括 WordCount

构建系统

Apache Beam 使用 Gradle 和自定义的 BeamModulePlugin。每个 Java 项目的 build.gradle 开头为:

apply plugin: 'org.apache.beam.module'
applyJavaNature( ... )

常用命令

构建命令:

# 编译指定项目
./gradlew -p sdks/java/core compileJava

# 构建项目(编译 + 测试)
./gradlew :sdks:java:harness:build

# 运行 WordCount 示例
./gradlew :examples:java:wordCount

运行单元测试:

# 运行项目全部测试
./gradlew :sdks:java:harness:test

# 运行指定测试类
./gradlew :sdks:java:harness:test --tests org.apache.beam.fn.harness.CachesTest

# 按模式匹配运行测试
./gradlew :sdks:java:harness:test --tests *CachesTest

# 运行指定测试方法
./gradlew :sdks:java:harness:test --tests *CachesTest.testClearableCache

运行集成测试(文件名以 IT.java 结尾,使用 TestPipeline):

# 在 Direct Runner 上运行 I/O 集成测试
./gradlew :sdks:java:io:google-cloud-platform:integrationTest

# 使用自定义 GCP project 运行
./gradlew :sdks:java:io:google-cloud-platform:integrationTest \
  -PgcpProject=<project> -PgcpTempRoot=gs://<bucket>/path

# 在 Dataflow Runner 上运行
./gradlew :runners:google-cloud-dataflow-java:examplesJavaRunnerV2IntegrationTest \
  -PdisableSpotlessCheck=true -PdisableCheckStyle=true -PskipCheckerFramework \
  -PgcpProject=<project> -PgcpRegion=us-central1 -PgcsTempRoot=gs://<bucket>/tmp

代码格式化:

./gradlew spotlessApply

编写集成测试

@Rule public TestPipeline pipeline = TestPipeline.create();

@Test
public void testSomething() {
  pipeline.apply(...);
  pipeline.run().waitUntilFinish();
}

通过 -DbeamTestPipelineOptions='[...]' 设置 pipeline options:

-DbeamTestPipelineOptions='["--runner=TestDataflowRunner","--project=myproject","--region=us-central1","--stagingLocation=gs://bucket/path"]'

使用修改后的 Beam 代码

发布到 Maven Local:

# 发布指定模块
./gradlew -Ppublishing -p sdks/java/io/kafka publishToMavenLocal

# 发布全部模块
./gradlew -Ppublishing publishToMavenLocal

构建 SDK 容器(用于 Runner v2):

./gradlew :sdks:java:container:java11:docker

# 打标签并推送
docker tag apache/beam_java11_sdk:2.XX.0.dev \
  "us-docker.pkg.dev/your-project/beam/beam_java11_sdk:custom"
docker push "us-docker.pkg.dev/your-project/beam/beam_java11_sdk:custom"

构建 Dataflow Worker Jar:

./gradlew :runners:google-cloud-dataflow-java:worker:shadowJar

测试命名约定与报告

  • 单元测试:*Test.java
  • 集成测试:*IT.java
  • 运行测试后,HTML 报告位于:<project>/build/reports/tests/test/index.html

IDE 设置(IntelliJ)

  1. 打开 /beam(仓库根目录,而不是 sdks/java)
  2. 等待索引完成
  3. 找到 examples/java/build.gradle,点击 wordCount 任务旁边的 Run 以验证设置

限制

资料未说明该技能的收费、价格、平台支持范围等其它信息,相关内容暂未提供。