- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试运行一个管道,我能够使用 DirectRunner
成功运行它, 在谷歌云数据流上。当我执行这个 Maven 命令时:
mvn compile exec:java \
-Dexec.mainClass=com.example.Pipeline \
-Dexec.args="--project=project-name \
--stagingLocation=gs://bucket-name/staging/ \
... custom arguments ...
--runner=DataflowRunner"
我收到以下错误:
No Runner was specified and the DirectRunner was not found on the classpath.
[ERROR] Specify a runner by either:
[ERROR] Explicitly specifying a runner by providing the 'runner' property
[ERROR] Adding the DirectRunner to the classpath
[ERROR] Calling 'PipelineOptions.setRunner(PipelineRunner)' directly
我故意删除了 DirectRunner
来 self 的 pom.xml
并添加了这个:
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-runners-google-cloud-dataflow-java</artifactId>
<version>2.0.0</version>
<scope>runtime</scope>
</dependency>
我继续删除了 <scope>
标记,然后称为 options.setRunner(DataflowRunner.class)
,但这没有帮助。扩展我自己的 PipelineOptions
来自 DataflowPipelineOptions
的界面也没有解决问题。
看起来它忽略了 runner
我无法调试的选项。
更新:这是完整的 pom.xml
,以防万一:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>dataflow</artifactId>
<version>0.1</version>
<dependencies>
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-sdks-java-core</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-runners-google-cloud-dataflow-java</artifactId>
<version>2.0.0</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-sdks-java-io-jdbc</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-sdks-java-io-google-cloud-platform</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.1.4.jre7</version>
</dependency>
</dependencies>
</project>
最佳答案
忘记将我的 PipelineOptions 实例作为参数传递给 Pipeline.create()
方法是我的问题的原因。
PipelineOptionsFactory.register(MyOptions.class);
MyOptions options = PipelineOptionsFactory.fromArgs(args).withValidation().as(MyOptions.class);
Pipeline pipeline = Pipeline.create(options); // Don't forget the options argument.
...
pipeline.run();
关于java - Apache 光束 : Cannot find DataflowRunner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45527075/
因此,我在 Apache Beam 中实现此作业,最终在 Dataflow 中运行它。因此,我使用 Direct Runner 进行了测试,但是当我将其更改为 Dataflow Runner 时,它崩
我正在尝试运行一个管道,我能够使用 DirectRunner 成功运行它, 在谷歌云数据流上。当我执行这个 Maven 命令时: mvn compile exec:java \ -Dexec.
我的 DataFlow 作业从 GS 存储桶中读取一个 CSV 文件,查询另一项服务以获取额外数据并将其写入新的 CSV 文件并存储回存储桶,但它似乎在开始获取输入 CSV 文件之前就掉了。 .. 这
我正在尝试使用 Apache Beam 0.6.0 在 GCP 上启动数据流作业。我正在使用 shade 插件编译一个 uber jar,因为我无法使用“mvn:execjava”启 Action 业
我们目前正在开发一个 Apache Beam 管道,用于从 GCP Pub/Sub 读取数据并将收到的数据写入 AWS S3 中的存储桶。 我们在 beam-sdks-java-io.amazon-w
Can send the java code but currently, it's not necessary. 我遇到一个问题,因为当我以(DirectRunner - 使用 Google VM
我正在创建一个演示管道,以使用我的免费 Google 帐户通过 Dataflow 将 CSV 文件加载到 BigQuery 中。这就是我所面临的。 当我读取 GCS 文件并记录数据时,效果非常好。
我想运行 WordCount来自 https://beam.apache.org/get-started/quickstart-java/ 的 java 示例,但不知何故我收到一个错误,即 Class
我有一个管道,它生成的数据流图(序列化 JSON 表示)超出了 API 允许的限制,因此无法像通常那样通过 apache beam 的数据流运行程序启动。并且使用指示参数 --experiments=
我在下面的beamSql程序中指定了数据流运行器: DataflowPipelineOptions options = PipelineOptionsFactory.as(DataflowPipeli
我可以使用 DirectRunner 运行这段代码,它运行良好。使用 DataflowRunner 它会崩溃: TypeError: process() takes exactly 4 argumen
长话短说 我们有一个默认的 VPC。试图运行数据流作业。初始步骤(读取文件)设法处理 1/2 个步骤。获取 JOB_MESSAGE_ERROR: SDK harness sdk-0-0 disconn
长话短说 我们有一个默认的 VPC。试图运行数据流作业。初始步骤(读取文件)设法处理 1/2 个步骤。获取 JOB_MESSAGE_ERROR: SDK harness sdk-0-0 disconn
我是一名优秀的程序员,十分优秀!